2016-07-14 4 views
0

큰 목록의 데이터 프레임이 있으며 그 중 일부는 일치하는 열을 갖고 다른 일부는 그렇지 않습니다. 일치하는 열이있는 개체를 다시 바인딩하고 일치하는 열 (변수 Year, Country)을 기반으로하지 않는 개체를 병합합니다. 그러나 필자는 모든 데이터 프레임을 손으로 훑어보고 어떤 열이 일치하는 열과 그렇지 않은지를보고 싶지 않습니다.R bind 및 R in merge

이 외에도 정확히 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 dataframes 고려 설명하기 위해 : 나는 (dataframe 1, dataframe2) 및 rbind (dataframe 3, dataframe 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 

을, 나는 dataframe 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)