按行删除重复项(仅相同的列)

时间:2019-08-10 09:22:29

标签: r data.table

我知道有很多方法,但是它们不适合我的要求。

我发现是唯一的,重复的,独特的,但是这些似乎可以与其他列/行进行比较。

我想要的是同一列的两个数据比较。

DT <- data.table(first=c("A","A","A","B","B","C","D"),
              second=c("A","B","D","B","D","C","A"),
              value=c(90,47,189,72,42,86,280))

我想找到first的值和second的值。如果它们相同,则将它们删除(仅相同的列)

输出:

     first second value
 1     A      B     47
 2     A      D    189
 3     B      D     42
 4     D      A    280

我使用这些方法,只是返回相同的数据

DT <- unique(DT, by=c('first','second'))
DT <- DT[!duplicated(DT[,c("first","second")]),]
DT <- distinct(DT, first, second, .keep_all= TRUE)

也许方法很简单?只是我认为它太复杂了。

2 个答案:

答案 0 :(得分:3)

使用data.table真的很简单!

DT[first != second,]

答案 1 :(得分:1)

这不只是吗?

DT[first != second, ]

#   first second value
#1:     A      B    47
#2:     A      D   189
#3:     B      D    42
#4:     D      A   280

duplicatedunique执行逐行计算,这里我们要比较column1和column2,因此使用!=的基本比较运算符就足够了。