根据应用于 2 个非数字列的 A+B 逻辑删除重复项

  • 本文关键字:A+B 删除 应用于 数字 r
  • 更新时间 :
  • 英文 :


这可能是不知道要搜索的正确关键字,但我正在寻找一种基于两个非数字列之间的顺序反转删除重复项的方法。这是我数据的一小部分:

ANIMAL1<-c("20074674_K.v1","20085105_K.v1","20085638_K.v1","20085646_K.v1")
ANIMAL2<-c("20085105_K.v1","20074674_K.v1","20074674_K.v1","20074674_K.v1")
exclusions<-c(13,13,5,10)
data<-data.frame(ANIMAL1,ANIMAL2,exclusions)
ANIMAL1 ANIMAL2 exclusions
1 20074674_K.v1 20085105_K.v1 13
2 20085105_K.v1 20074674_K.v1 13
3 20085638_K.v1 20074674_K.v1 5
4 20085646_K.v1 20074674_K.v1 10

第一行和第二行是重复比较,动物的顺序在前两列之间颠倒。删除哪一个并不重要,但我想删除其中一个重复项......以及在我的较大数据帧中符合此逻辑的所有其他重复项。我习惯于根据这些问题中的逻辑进行子集化:删除重复的列对,根据 2 列对行进行排序,以及其他搜索"基于 2 列删除重复项"的帖子,但我还没有找到任何接近我的用例的东西。以下是我希望我的数据在重复删除后的样子:

ANIMAL1 ANIMAL2 exclusions
1 20085105_K.v1 20074674_K.v1 13
2 20085638_K.v1 20074674_K.v1 5
3 20085646_K.v1 20074674_K.v1 10    

多谢!

data[duplicated(t(apply(data,1,sort))) == FALSE,]
  1. 按每一行排序,以便如果它们在不同的列中,则使每行的ANIMAL1ANIMAL2组合相同。排除项也会排序,但在这种情况下,您不必这样做。
  2. 当它按行排序时,需要将数据转置回作为原始数据集的列
  3. 标记行重复项并将其删除。

最新更新