> 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 を使用することです...必要のない、より簡単でエレガントな解決策はありますかフラグ?