我有一个数据框df1:
Column1 Column2
A B
A C
我想与df2合并:
Code Country Continent
A x e
B y f
C z g
获取:
Column1 Column2 Country1 Continent1
A B x e
A C x e
再次为第2列中的国家执行此操作,以获取第2列的国家/地区。
Column1 Column2 Country1 Continent1 Country2 Continent2
A B x e y f
A C x e z g
现在我正在使用合并功能: df1< - merge(df1,df2,by.x =" Column1",by.y =" Code")
但我获得了重复的列:
Column1 Column2 Country Continent
A B x e
A B x e
A C x e
A C x e
我已尝试过all.x = TRUE等的所有组合。
有没有办法获得我想要的输出?最好是合并功能或plyr ...
提前致谢
答案 0 :(得分:2)
使用merge()
,我认为这是一个两步操作......“a”是你的第一个问题,“c”是你的第二个问题。
df1 <- read.csv(text="Column1,Column2
A,B
A,C", stringsAsFactors=F)
df2 <- read.csv(text="Code,Country,Continent
A,x,e
B,y,f
C,z,g", stringsAsFactors=F)
a <- merge(df1,df2,by.x="Column1",by.y="Code")
b <- merge(df1,df2,by.x="Column2",by.y="Code")
c <- merge(a,b, by.x=c("Column1", "Column2"), by.y=c("Column1", "Column2"), all=TRUE)
> a
Column1 Column2 Country Continent
1 A B x e
2 A C x e
> c
Column1 Column2 Country.x Continent.x Country.y Continent.y
1 A B x e y f
2 A C x e z g