昨天帮师妹处理数据,简单的线性拟合,探究βNTI与SOC差异之间的相关性。
然而,就是这么个简单的问题,竟然翻车了!!!
而且是数据读取环节, R也没有报错或者提醒。
幸得师妹通过其他方式验证,才发现了问题所在。
师妹说,她通过mantel和spss计算的结果,均显示两者显著相关,为啥我做出的结果不相关?
咦??问题出在哪儿??
出在数据读取环节!
因为对数据格式不了解,大眼一看,就直接操作了
dat = read.table(file.choose(), header = T, row.names = 1)
查看读取的文件

读取过程无报错或者警示。接着进行后续分析。

经过两人校对,发现是数据列名格式不统一,导致数据读取出错

soil fertility
是以空格为分隔符,而ses.mntd
是以.
为分隔符
而read.table()
默认是以空格为分隔符,所以,soil fertility
一列就被拆成了两列,导致数据发生混乱
dat = read.table(file.choose(), header = T, row.names = 1,sep = '\t')


教训
- 数据格式要规范统一,列名不以
数字
开头,分隔符sep
要一致 - 处理别人的数据,要提前了解数据内容和格式
- 脚本编写,参数设置规范、严禁
未解之谜
在数据读取环节,像这个情况,一列被拆分为两列,那这样会出现数据部分和列名部分维度不一致的情况,R为啥没有报错?而是自定义的从后往前保留列名,将原始数据中的第一个列名给删除了?
网友评论