3
> part1<-data.frame(key=c(5,6,7,8,9),x=c("b","d","a","c","b"))
> part1
  key x
1   5 b # key==5,x==b
2   6 d
3   7 a
4   8 c
5   9 b
> part2<-data.frame(key=c(1,2,3,4,5), x=c("c","a","b","d","a"))
> part2
  key x
1   1 c
2   2 a
3   3 b
4   4 d
5   5 a # key==5,x==a

2 つ以上のデータフレームがありますが、この例では 2 つだけ使用します。次に、lapply を使用してそれらをすべて dflist1 というリストに入れ、rbind します。この例では、手動で行います。

dflist1<-list(part1,part2)
final<-do.call(rbind,dflist1)
final<-final[order(final$key),] #sort by key

結果:

> final
   key x
6    1 c
7    2 a
8    3 b
9    4 d
1    5 b #duplicate from part1
10   5 a #duplicate from part2
2    6 d
3    7 a
4    8 c
5    9 b

重複を取り除きたい。!duplicated() を使用するのは簡単ですが、この場合、特に以前のデータフレームから行を削除/上書きしたいです。つまり、この場合、part1 の「5 b」は part2 の「5 a」によって削除/上書きされます。 . また、値が「5 b」の part3 があった場合、part2 の「5 a」は、part3 の「5 b」によって削除/上書きされます。

私が欲しいもの:

   key x
6    1 c
7    2 a
8    3 b
9    4 d
10   5 a #this is from part2, no more duplicate from part1
2    6 d
3    7 a
4    8 c
5    9 b

現在の解決策:私が考えることができる唯一のことは、各データフレームに追加の変数でフラグを立てる関数を追加し、それを並べ替えて、その変数で !duplicated を使用することです...必要のない、より簡単でエレガントな解決策はありますかフラグ?

4

1 に答える 1