【发布时间】:2026-01-07 14:45:02
【问题描述】:
我在不同的times 和不同的situations 观察到users,我可能会多次看到它们,如下所示:
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))
我想做的是使用data.table计算每个时间段内user-situations的数量。预期输出:
result <- data.table(time = c(1,2),
user_situations = c(2,2))
我知道我可以通过连锁方式做到这一点:
unique(df[, .(time, user, situation)])[, .(user_situations = .N), .(time)]
但想知道是否有一种简单的方法可以一次性完成。
【问题讨论】:
-
您可以尝试
df[, .(user_situations = uniqueN(.SD[,.(user, situation)])), time],但我认为您的方法更有效。 -
你的解决方案对我来说很好,我会稍微修改为
unique(df, by = c("user","situation"))[, .N, by = time] -
@DavidArenburg 想把它作为答案发布吗?
标签: r count data.table