对 data.table 中的多个列进行不同计数

Roy*_*lTS 5 r count data.table

我在不同的s 和不同的s 中观察users ,并且可能会多次看到它们,如下所示:timesituation

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))
Run Code Online (Sandbox Code Playgroud)

我想做的是使用 来计算每个时间段内user-s的数量。预期输出:situationdata.table

result <- data.table(time = c(1,2),
                     user_situations = c(2,2))
Run Code Online (Sandbox Code Playgroud)

我知道我可以以连锁方式做到这一点:

 unique(df[, .(time, user, situation)])[, .(user_situations = .N), .(time)]
Run Code Online (Sandbox Code Playgroud)

但想知道是否有一种简单的方法可以一次性完成此操作。

小智 5

dplyr解决方案:

\n\n
library(dplyr)\ndf <- data.table(time = c(1,1,1,2,2),\n             user = c(1,1,2,1,2),\n             situation = c(1,1,1,2,2),\n             observation = c(1,2,1,1,1))\n\ndf %>% group_by(time) %>%\n  distinct(user, situation) %>%\n  summarise(user_situations = n())\n\n# tbl_dt [2 \xc3\x97 2]\n   time user_situation\n  <dbl>          <int>\n1     1              2\n2     2              2\n
Run Code Online (Sandbox Code Playgroud)\n

  • 这比“data.table”解决方案更容易吗?这只是简单的逐字逐句 (4认同)