根据常见值和不同值删除重复项

pau*_*eba 3 r duplicates data.table

我有这样的数据表

dt <- data.table(date=c('d1','d2','d3','d1','d2','d3'),v1=c('a','a','b','a','b','b'),v2=c(2,2,4,2,4,4))
   date v1 v2
1:   d1  a  2
2:   d2  a  2 <-need to remove this 
3:   d3  b  4 
4:   d1  a  2
5:   d2  b  4 <-need to remove this 
6:   d3  b  4
Run Code Online (Sandbox Code Playgroud)

我的实际数据包含1600万行和5列构成独特条件,以及一个日期列.我想删除具有相同公共值(在v1,v2中)的重复项,但仅限于它们的日期(日期)不同时.

样本输出

   date v1 v2
1:   d1  a  2
2:   d3  b  4
3:   d1  a  2
4:   d3  b  4
Run Code Online (Sandbox Code Playgroud)

我尝试了"重复"功能但无法找到正确的方法来删除重复项.感谢任何帮助.

Cat*_*ath 8

如果我正确地"翻译",你需要不为变量重复的行v1和/ v2或那些为这些变量重复的行,还需要变量date

dt[!duplicated(dt[, .(v1, v2)]) | 
   (duplicated(dt[, .(v1, v2)]) & duplicated(dt[, .(date, v1, v2)]))]
#   date v1 v2
#1:   d1  a  2
#2:   d3  b  4
#3:   d1  a  2
#4:   d3  b  4
Run Code Online (Sandbox Code Playgroud)

正如@Arun所提到的,另一种避免复制的方法dt是利用以下by参数duplicated.data.table:

dt[!duplicated(dt, by=c("v1", "v2")) | 
   (duplicated(dt, by=c("v1", "v2")) & duplicated(dt, by=c("date", "v1", "v2")))]
Run Code Online (Sandbox Code Playgroud)