如何根据 R 中其他列的条件 filter/subset 数据 table?

How to filter/subset a data table based on condition on other columns in R?

我有一个数据集,类似例子:

Data <- data.table(Date=c("2020-01-02", "2020-01-02", "2020-01-03", "2020-01-04", "2020-01-04", "2020-01-04", "2020-01-04"), ID=c(1,2,1,1,1,1,2), Value=c(150,120,111,189,654,333,213))

输出:

         Date ID Value
1: 2020-01-02  1   150
2: 2020-01-02  2   120
3: 2020-01-03  1   111
4: 2020-01-04  1   189
5: 2020-01-04  1   654
6: 2020-01-04  1   333
7: 2020-01-04  2   213

我想通过 DateID 过滤或子集 Data。 例如, 如果在一天中,我对ID的观察少于2次,那么去掉那一天的IDValue2020-01-02 我只有一个 ID 1,所以,这一行将被删除。

如果你能给我一些建议,我将不胜感激。

非常感谢

只需按日期和 ID 分组,统计观察值并在大于一个时进行过滤:

Data[, n:=.N, by = .(Date, ID)][n>1]
#          Date ID Value n
# 1: 2020-01-04  1   189 3
# 2: 2020-01-04  1   654 3
# 3: 2020-01-04  1   333 3

使用dplyr,你可以试试:

library(dplyr)
Data %>% group_by(ID, Date) %>% filter(n() >= 2) %>% ungroup()

输出:

# Date          ID Value
# <chr>      <dbl> <dbl>
# 1 2020-01-04     1   189
# 2 2020-01-04     1   654
# 3 2020-01-04     1   333