合并返回重复的行

时间:2015-06-01 16:13:52

标签: r

我有一个数据框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 ...

提前致谢

1 个答案:

答案 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