rbind数据帧,复制rownames问题(rbind data frames, duplicate

2019-08-01 19:56发布

虽然重复行(和列)的名称被允许在一个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

现在试图rbind()他们(注意行名称):

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

但对于案件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

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

Answer 1:

怎么样

duprows <- which(!is.na(match(rownames(bar),rownames(foo))))
rbind(foo,bar[-duprows,])

或(基于下面的评论)

duprows <- rownames(bar) %in% rownames(foo)
rbind(foo, bar[!duprows,])

几个变化都是可能的根据(1)选择匹配或不匹配的上; (2)发现的匹配数字或逻辑值。



文章来源: rbind data frames, duplicated rownames issue