> 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
Существует более двух фреймов данных, но в этом примере я использую только два. Затем я использую 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 (), но в этом случае я специально хочу отбросить / перезаписать строки из более ранних фреймов данных - то есть в этом случае «5 b» из части 1 должно быть удалено / перезаписано «5 a» из части 2 . И если бы была часть 3 со значением «5 b», тогда «5 a» из части 2 затем было бы отброшено / перезаписано «5 b» из части 3.
Что я хочу:
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 для этой переменной ... есть ли более простое или более элегантное решение, которое не требует помечает?
data.table(), setkey(), unique()
- person Ricardo Saporta   schedule 27.03.2014duplicated
мог бы пригодиться? Например.final[!duplicated(final$key, fromLast = T), ]
похоже на ваш результат - person alexis_laz   schedule 27.03.2014