2013-07-12 69 views
1

我是R的初學者。我使用的數據是.Sas7bdat而不是.csv。 我已經從sas7bdat中讀取了三個數據集,如下所示。使用.Sas7bdat文件併合並在R

下面的代碼:

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

將多個列表傳遞給merge的方法有兩種:do.callReduce。我用do.call方法的嘗試在這裏失敗(我認爲),因爲第三個data.frame被匹配到'by'參數。相反,嘗試:

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

如果不提供dataframes的結構,這是不可能給出關於如何「計算平均值和標準偏差」進一步編碼的建議。