rbind数据帧,重复的行名问题

Ali*_*Ali 4 r duplicates duplicate-removal dataframe rbind

虽然允许使用重复的行(和列)名称matrix,但不允许使用data.frame。尝试对rbind()具有共同行名的某些数据框突出显示此问题。考虑下面的两个数据帧:

foo = data.frame(a=1:3, b=5:7)
rownames(foo)=c("w","x","y")
bar = data.frame(a=c(2,4), b=c(6,8))
rownames(bar)=c("x","z")
# foo               bar
#   a b               a b
# w 1 5             x 2 6
# x 2 6             y 4 8
# y 3 7
Run Code Online (Sandbox Code Playgroud)

现在尝试使用rbind()它们(请注意行名):

rbind(foo, bar)
#    a b
# w  1 5
# x  2 6
# y  3 7
# x1 2 6
# z  4 8
Run Code Online (Sandbox Code Playgroud)

但是对于matrix

rbind(as.matrix(foo), as.matrix(bar))
#   a b
# w 1 5
# x 2 6
# y 3 7
# x 2 6
# z 4 8
Run Code Online (Sandbox Code Playgroud)

这里是问题:如何rbind()删除两个重复行(具有相同行名)的数据帧?

Ben*_*ker 5

怎么样

duprows <- which(!is.na(match(rownames(bar),rownames(foo))))
rbind(foo,bar[-duprows,])
Run Code Online (Sandbox Code Playgroud)

或(根据以下评论)

duprows <- rownames(bar) %in% rownames(foo)
rbind(foo, bar[!duprows,])
Run Code Online (Sandbox Code Playgroud)

根据(1)选择匹配或不匹配,可能有几种变化;(2)查找匹配的数字或逻辑值。

  • @AliSharifi-rbind(foo,bar [!rownames(bar)%in%rownames(foo),])`对* me *来说是最自然的。 (2认同)