使用R比较具有不同行的两个数据帧

时间:2015-07-06 03:14:36

标签: r

我有两个不同行号的数据框:

class1<-c(1,2,5,6,7)
abund1<-c(10.4,7.5,7.1,5.1,3.2)
df1<-data.frame(class1,abund1)

class2<-c(1,2,3,4,5,6,7)
abund2<-c(9.5,8.4,8,6.3,6,2.4,1.2)
df2<-data.frame(class2,abund2)

我想比较这两个数据帧,但我需要相同数量的行。我的目的是将所有那些与df2不匹配的类填充为零。解决方案如下:

  class abund
     1   10.4
     2    7.5
     3    0.0
     4    0.0
     5    7.1
     6    5.1
     7    3.2

有什么想法吗?非常感谢你!

2 个答案:

答案 0 :(得分:1)

kk<-merge(df1,df2,by.x="class1",by.y="class2",all.y=TRUE)[-3]
kk[is.na(kk$abund1),2]<-0
> kk
  class1 abund1
1      1   10.4
2      2    7.5
3      3    0.0
4      4    0.0
5      5    7.1
6      6    5.1
7      7    3.2

答案 1 :(得分:0)

data.table

的选项
 library(data.table)#v1.9.5+
 setDT(df1, key='class1')[df2][is.na(abund1), abund1:=0][, abund2:=NULL][]
 #   class1 abund1
 #1:      1   10.4
 #2:      2    7.5
 #3:      3    0.0
 #4:      4    0.0
 #5:      5    7.1
 #6:      6    5.1
 #7:      7    3.2
相关问题