R-merge()在所有列中返回NA,尽管all.x = T

Jes*_*ica 7 merge r na

我是新来的,并且已经在论坛上搜索了我的问题,但没有找到解决方案。我有两个数据框,我想将它们合并到一个公用的关键字段上。

          merge(x
               ,y
               ,by.x="a"
               ,by.y="b"
               ,all.x=T
               ,sort=F
               )
Run Code Online (Sandbox Code Playgroud)

由于我的x数据框比我的y数据框有更多的行,因此我想保留x的所有行,而y的列的NA不适用,而x的列中的所有值均适用。对于不匹配的情况,此代码仅为我提供了额外的行,其中所有列中都包含NA(来自x和y的列)。如果有人可以帮助我,我将不胜感激。我的错误在哪里?

例:

a = data.frame(c(111,222,333,444),c(1,5,3,8))
b = data.frame(c(111,222),c(0.1,0.4))
colnames(a)=c("code","value")
colnames(b)=c("code","value")
c = merge(a
          ,b
          ,by="code"
          ,all.x=T)
Run Code Online (Sandbox Code Playgroud)

在此示例中,它工作正常。在我的数据中,我获得了行3&4中所有列的NA。

希望您能理解我的糟糕示例?!

谢谢!杰西卡;)

nog*_*pes 2

刚设定all=TRUE

# Create your data
x<-data.frame(val1=c(2,8,6,3),a=c('h','k','b','e'))
y<-data.frame(val2=c(4,1),b=c('h','e'))
# Outer join
merge(x,y,by.x='a',by.y='b',all=TRUE)
#   a val1 val2
# 1 b    6   NA
# 2 e    3    1
# 3 h    2    4
# 4 k    8   NA
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,根据我的数据,在您的示例中,我会得到整个第 1 行和第 4 行的 NA?! (4认同)