我在不同的user
和不同的time
处观察situation
,我可能会多次看到它们,如下所示:
df <- data.table(time = c(1,1,1,2,2),
user = c(1,1,2,1,2),
situation = c(1,1,1,2,2),
observation = c(1,2,1,1,1))
我想要做的是使用user
计算每个时间段内situation
- data.table
的数量。预期产出:
result <- data.table(time = c(1,2),
user_situations = c(2,2))
我知道我可以用链式方式做到这一点:
unique(df[, .(time, user, situation)])[, .(user_situations = .N), .(time)]
但是想知道是否有一种简单的方法可以一次性完成。
答案 0 :(得分:2)
dplyr
解决方案:
library(dplyr)
df <- data.table(time = c(1,1,1,2,2),
user = c(1,1,2,1,2),
situation = c(1,1,1,2,2),
observation = c(1,2,1,1,1))
df %>% group_by(time) %>%
distinct(user, situation) %>%
summarise(user_situations = n())
# tbl_dt [2 × 2]
time user_situation
<dbl> <int>
1 1 2
2 2 2