我的数据看起来像
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个市场。
答案 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