2016-07-14 8 views
0

私はこの大きなデータフレームリストを持っていますが、その中には一致する列があり、他の列は一致しません。私は一致する列を持つものをrbindし、(変数Year、Countryに基づいて)一致する列を持たない他のものをマージします。しかし、どのデータフレームにも一致する列があるかどうかを調べるために、すべてのデータフレームを手作業で調べることは望ましくありません。RバインドとマージR

今、私はそれがこの線に沿って何かに見えるだろうと考えていた。まさにRでこれを行う方法を知らないから別に

myfiles = list.files(pattern="*.dta") 
dflist <- lapply(myfiles, read.dta13) 

for (i in 1:length(dflist)){ 

    if colnames match 
    put them in list and rbindlist. 
    else put them in another list and merge. 
}  

を、私は、これは後に動作しないだろうと思うし始めていますすべて。

6はデータフレーム考慮する例示するために:私は(データフレーム1、dataframe2)及びrbind(データフレーム3、データフレーム4)rbindしたいこの場合

Dataframe 1:       Dataframe 2: 

Country Sector Emp    Country Sector Emp 
Belg  A  35    NL  B  31 
Aus  B  12    CH  D  45 
Eng  E  18    RU  D  12 

Dataframe 3:      Dataframe 4: 
Country Flow PE    Country Flow PE 
NL  6  13     ... ... ... 
HU  4  11     ... ... 
LU  3  21     ... 

Dataframe 5:    dataframe 6: 

Country Year Exp   Country Year Imp 
GER  02 44   BE  00 34 
GER  03 34   BE  01 23 
GER  04 21   BE  02 41 

を、私はデータフレーム5をマージしたいと6、変数の国と年に基づいています。だから私の出力は、いくつかのrbinded/mergedデータフレームになります..

+0

私は(すべて= TRUEで)マージと思いますが、(ただしもっとゆっくり)rbindます。それを行う方法については、http://stackoverflow.com/questions/8091303/simultaneously-merge-multiple-data-frames-in-a-list – Aaron

答えて

0

Rbindは、列が同じでない場合は失敗します。提案されているように、dplyrパッケージのmergeまたはleft_joinを使用できます。

多分これは動作します:それはちょうど一緒にすべてをマージするために働くかもしれないのでdo.call(left_join, dflist)