1

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

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

4

1 回答 1

1

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

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

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

于 2013-07-12T16:52:23.070 回答