我是R的初学者。我使用的数据是.Sas7bdat,而不是.csv。 我已经从sas7bdat中读取了三个数据集,如下所示。
以下代码:
library(sas7bdat)
ds1 <-read.sas7bdat("q:/file name1.sas7bdat")
ds2<-read.sas7bdat("q:/file name2.sas7bdat")
ds3<-read.sas7bdat("q:/file name3.sas7bdat")
我需要根据ID合并所有这三个文件。每个数据集中的变量数量不均匀。我使用了以下代码,
newds <-merge(ds1,ds2,ds3, by="id",all=TRUE)
Error in fix.by(by.x, x) :'by' must specify one or more columns as numbers, names or logical
如何在此之后恢复此错误并计算平均值和标准差?感谢。
答案 0 :(得分:1)
有两种紧凑的方法可以将多个列表传递给merge
:do.call
和Reduce
。我在do.call方法上的尝试在这里失败了(我认为),因为第三个data.frame正在与'by'参数匹配。相反,尝试:
newds <-Reduce( function(x,y) merge(x,y, by="id", all=TRUE),
list(ds1,ds2,ds3) )
如果您不提供数据帧的结构,则无法提供有关如何“计算均值和标准差”的进一步编码建议。