根据唯一性删除列值显示的行数少于给定次数的行

时间:2014-03-16 03:57:22

标签: r row which

我的数据看起来像

date player market 
1-1     1     1
1-1     2     1
1-1     1     2
1-2     2     1
1-2     3     2
1-2    12     3
1-2    11     3
1-2     2     3
1-3    24     3
1-3     4     4
1-3    21     1
1-4     1     1
1-4    51     1
1-4     1     1
1-5     1     2

我想删除与列市场相关的所有行,这些行在少于三个唯一日期中出现。

所以这会删除所有行,除了那些Market列为1或2的行。这是我正在做的简化版本,所以循环是不可能的。

有快速的方法吗?

有60,000个市场。

1 个答案:

答案 0 :(得分:2)

df是您的data.frame开头 -

library(data.table)
dt <- data.table(df)
dt[,Freq := length(unique(date)), by = market]
dt2 <- dt[Freq > 2]

输出 -

> dt2
    date player market Freq
 1:  1-1      1      1    4
 2:  1-1      2      1    4
 3:  1-1      1      2    3
 4:  1-2      2      1    4
 5:  1-2      3      2    3
 6:  1-3     21      1    4
 7:  1-4      1      1    4
 8:  1-4     51      1    4
 9:  1-4      1      1    4
10:  1-5      1      2    3