删除R中两列之间交换值的重复项

时间:2016-07-29 01:46:50

标签: r dataframe duplicates

我有一个像这样的简单数据框:

| id1 | id2 | location   | comment   |
|-----|-----|------------|-----------|
| 1   | 2   | Alaska     | cold      |
| 2   | 1   | Alaska     | freezing! |
| 3   | 4   | California | nice      |
| 4   | 5   | Kansas     | boring    |
| 9   | 10  | Alaska     | cold      |

前两行是重复的,因为id1id2都去了阿拉斯加。他们的评论不同并不重要。

如何删除其中一个重复项 - 可以删除一个。

我首先尝试对id1id2进行排序,然后获取它们被复制的索引,然后返回并使用索引对原始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'))

1 个答案:

答案 0 :(得分:1)

对于&#39; id&#39;我们可以applyMARGIN=1sort按行使用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}}