2017-05-17 33 views
2

2つの異なるソースからのデータで2つのデータフレームをマージしたいとします。ソースAには一部の国のデータが含まれていますが、ソースBにはソースAに加えて他の多くの国が含まれています。これらのデータフレームを例として参照してください。変数の値が異なる場合にデータフレームをマージする

dfa<-data.frame("Country"=c("UK","USA","Canada"),"Value"=c(1,2,3),"Source"=c("A","A","A"),"Comments"=c("bla1","bla2","bla3")) 
dfb<-data.frame("Country"=c("UK","USA","Canada","France","Germany"),"Value"=c(4,5,6,7,8),"Source"=c("B","B","B","B","B"),"Comments"=c("bla4","bla4","bla5","bla6","bla7")) 

私の目標は、RAで生産することであるデータフレームB(dfb)ではなく、データフレームAに配置されている国からのデータフレームA(dfa)から行に加え、これらの行を含むデータフレームを(合併dfa

答えて

2

ソリューション:

library(dplyr) 
dfb %>% 
    anti_join(dfa, by = 'Country') %>% 
    rbind(dfa) 

アウト:

Country Value Source Comments 
1 Germany  8  B  bla7 
2 France  7  B  bla6 
3  UK  1  A  bla1 
4  USA  2  A  bla2 
5 Canada  3  A  bla3 
3

一つの方法は、このようになります:dplyr

rbind(dfa, dfb[!dfb$Country %in% dfa$Country, ]) 
関連する問題