快速举例:
set.seed(123)
library("dplyr")
df <- data_frame(client=sample(letters, 200, replace=T),
content=sample(LETTERS, 200, replace=T))
我观察到客户端与内容交互 . 我想知道每个客户使用了多少不同的内容 .
我做以下事情来获得我想要的东西:
df %>%
group_by(client, content) %>%
summarize(n=n()) %>%
summarize(n_content=n())
# output
client n_content
(chr) (int)
1 a 3
2 b 4
3 c 5
.. ... ...
第一个 summarize
的重点是每个客户端/内容组合只能获得一行(因为一个客户端可能会多次使用相同的内容) . 因此第一个 n()
的输出对我来说没用,这让我觉得必须有一个更有效/更优雅的解决方案 .
有没有办法更有效地做到这一点?我正在寻找一种理想的与dplyr兼容的解决方案,但是基本R或其他软件包都可以 . 我对使用 data.table
的解决方案不感兴趣 .
2 回答
或者
group_by
那样快一点
你可以这样做: