4

では重複した行 (および列) 名が許可されてmatrixいますが、 では許可されていませんdata.framerbind()共通の行名を持ついくつかのデータ フレームを試してみると、この問題が浮き彫りになります。以下の 2 つのデータ フレームを考えてみましょう。

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()重複した行 (同じ行名を持つ) を削除した 2 つのデータ フレームを作成するにはどうすればよいですか?

4

2 に答える 2

6

どうですか

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) 一致する数値または論理値を見つける。

于 2012-10-23T20:13:33.217 に答える