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)
我尝试了"重复"功能但无法找到正确的方法来删除重复项.感谢任何帮助.
如果我正确地"翻译",你需要不为变量重复的行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)
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |