我有一个像这样的简单数据框:
| id1 | id2 | location | comment |
|-----|-----|------------|-----------|
| 1 | 2 | Alaska | cold |
| 2 | 1 | Alaska | freezing! |
| 3 | 4 | California | nice |
| 4 | 5 | Kansas | boring |
| 9 | 10 | Alaska | cold |
前两行是重复的,因为id1
和id2
都去了阿拉斯加。他们的评论不同并不重要。
如何删除其中一个重复项 - 可以删除一个。
我首先尝试对id1
和id2
进行排序,然后获取它们被复制的索引,然后返回并使用索引对原始df进行子集化。但我似乎无法解决这个问题。
df <- data.frame(id1 = c(1,2,3,4,9), id2 = c(2,1,4,5,10), location=c('Alaska', 'Alaska', 'California', 'Kansas', 'Alaska'), comment=c('cold', 'freezing!', 'nice', 'boring', 'cold'))
答案 0 :(得分:1)
对于&#39; id&#39;我们可以apply
与MARGIN=1
到sort
按行使用duplicated
列,cbind与&#39; location&#39;然后使用df[!duplicated(data.frame(t(apply(df[1:2], 1, sort)), df$location)),]
# id1 id2 location comment
#1 1 2 Alaska cold
#3 3 4 California nice
#4 4 5 Kansas boring
#5 9 10 Alaska cold
获取可用于删除/保留行的逻辑索引。
{{1}}