前面7篇我们聊的都是"怎么用别人的数据库"。从这篇开始换个方向——聊聊怎么管好你自己的数据。
先问一个扎心的问题:你的科研数据现在是什么状态?
如果你的回答是"都在Excel里",那再问一个:打开你的Excel,你能在10秒内找到"2024年3月那批实验中,对照组第7号样本的Western blot灰度值"吗?
大多数人的答案是找不到。因为大多数人的Excel长这样:一个文件夹里散落着"数据.xlsx""数据(1).xlsx""最终版.xlsx""最终版(真的最终).xlsx",打开之后列名是"A""B""C",或者是"张三的数据""那批细胞"这种只有本人能看懂的标注。合并单元格到处都是,一个Sheet里既有原始数据又有计算结果还有备注。
这不是数据库,这是数据坟场。
一、Excel本身没问题,问题是你用它的方式
Excel完全可以当数据库用——前提是你遵守几条规矩。这些规矩不是什么高深的数据库理论,就是一些常识性的约定。遵守了,你的数据就能被搜索、被筛选、被分析、被别人看懂;不遵守,三个月后连你自己都看不懂。
下面这些规矩,每一条都是无数科研人踩过坑之后总结出来的。
二、规矩1:一行一条记录,一列一个变量
这是最基本的原则,也是最多人违反的。
错误示范:
样本1:对照组,OD值 0.35/0.41/0.38(三次重复)
样本2:实验组,OD值 0.72/0.68/0.75
把三次重复塞在一个格子里,用斜杠分隔——这种数据没法筛选、没法排序、没法做统计。
正确做法:
每次重复单独一行:
样本ID | 分组 | 重复次数 | OD值
S001 | 对照 | 1 | 0.35
S001 | 对照 | 2 | 0.41
S001 | 对照 | 3 | 0.38
S002 | 实验 | 1 | 0.72
……
这种格式叫"长格式"或"整洁数据"(tidy data)。看起来行数多了,但它能直接被Excel的数据透视表、R、Python、SPSS读取和分析。
三、规矩2:列名要规范,别用中文别用空格
列名是你数据的"门牌号",后续所有分析都要靠它来定位数据。
不好的列名:"张三的数据""那批细胞的OD""第二次实验 结果"
好的列名:sample_id、group、replicate、od_value、experiment_date
几个原则:
- 用英文(中文列名在R和Python里经常出bug)
- 用下划线连接,不用空格(空格在编程里是大忌)
- 简短但能看懂(od_value比optical_density_value_at_450nm好)
- 不要用数字开头(1st_result这种不行,改成result_1st)
- 全小写(避免大小写混乱)
如果你实在想用中文方便自己看,可以在第二行加一行中文注释,但第一行必须是规范的英文列名。
四、规矩3:永远不要合并单元格
合并单元格是Excel数据管理的头号杀手。
很多人喜欢把"对照组"三个字合并到左边一大格,右边对应好几行数据,看起来整齐好看。但是:合并单元格之后,你没法排序、没法筛选、没法做透视表、没法导入任何分析软件。一合并,数据就"废"了。
正确做法:每一行都老老实实写上分组信息,哪怕重复一百遍。看起来啰嗦,但这才是能用的数据。
同理,不要在表格里插入空行来"分隔"不同组的数据。用分组列来区分,不要用空行。
五、规矩4:原始数据和分析结果分开放
很多人在同一个Sheet里,上面是原始数据,下面是平均值、标准差、p值,旁边还画了个图。这样做的问题是:原始数据和计算结果混在一起,万一公式写错了或者不小心改了原始数据,你根本发现不了。
正确做法:
- Sheet1:原始数据(只放原始数据,不做任何计算)
- Sheet2:分析结果(公式引用Sheet1的数据)
- 或者更好:原始数据存一个文件,分析用另一个文件
原始数据文件一旦录入完成,就锁定它(Excel里可以设置"保护工作表"),防止误改。这是科研数据管理的基本素养。
六、规矩5:日期和数值要统一格式
日期:统一用 YYYY-MM-DD 格式(比如2024-03-15)。不要混用"3月15日""2024/3/15""20240315"。Excel经常会自动把日期转成奇怪的格式,录入时注意检查。
数值:同一列的数值保持相同的小数位数。不要一个格子写"0.35",下一个写".4",再下一个写"0.350000"。
缺失值:统一用空格表示缺失,不要混用"N/A""无""—""0"。特别注意:缺失和0是两回事。没测就是空着,测了结果是0就填0。
分类变量:统一用词。"对照组"就都写"对照组",不要有的写"control"有的写"对照"有的写"ctrl"。
七、规矩6:文件命名有讲究
你的文件夹里不应该出现这些名字:
数据.xlsx
数据(最新).xlsx
数据(最终版).xlsx
数据(最终版v2)(1).xlsx
好的命名方式:
2024-03-15_WB_TP53_raw.xlsx
2024-03-15_WB_TP53_analysis.xlsx
2024-04-02_qPCR_batch2_raw.xlsx
规则:日期_实验类型_关键信息_版本。这样文件按名字排序就是按时间排序,一眼就能找到你要的那个。
八、一个模板:临床数据收集表
如果你在做临床研究,需要收集患者数据,这里给一个基本的表头模板:
patient_id | age | sex | diagnosis | stage | treatment | response | os_months | os_status | collection_date | operator
几个要点:
- patient_id用编码,不要用真名(数据安全)
- sex用M/F,不要用"男""女""1""2"混着来
- os_status用1(死亡)和0(存活),这是生存分析的标准编码
- 加一列operator(操作人),方便追溯数据来源
- 加一列collection_date(采集日期),方便按时间筛选
九、从Excel到真正的数据库
Excel能管几百到几千条数据。如果你的数据量更大、参与的人更多、需要多人同时录入,就该考虑用专门的数据管理工具了。但不管你用什么工具,这篇讲的这些规矩都是通用的。数据管理的核心不是工具,是习惯。
6条规矩让你的Excel变成能用的数据库
一行一记录 · 列名规范 · 不合并单元格
原始数据分开放 · 格式统一 · 文件名有讲究
公共数据库系列 · 第8篇(建库篇①)
上一篇:NHANES——慢病研究的"论文制造机"
下一篇预告:建库篇②——专病数据库的设计思路
关注我们,持续更新科研干货