使用.Sas7bdat文件并在R中合并

时间:2013-07-12 12:56:14

标签: r merge

我是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

如何在此之后恢复此错误并计算平均值和标准差?感谢。

1 个答案:

答案 0 :(得分:1)

有两种紧凑的方法可以将多个列表传递给mergedo.callReduce。我在do.call方法上的尝试在这里失败了(我认为),因为第三个data.frame正在与'by'参数匹配。相反,尝试:

newds <-Reduce( function(x,y) merge(x,y, by="id", all=TRUE), 
                list(ds1,ds2,ds3) )

如果您不提供数据帧的结构,则无法提供有关如何“计算均值和标准差”的进一步编码建议。