我有以下数据:
df <- data.frame(id = c(1, 1, 2, 2, 2), desc = c("a1", "a2", "b1", "b2", "b3"))
我想按id计算,并在每个id组中选择desc的第一行。也就是说,返回如下数据框。
id count desc
1 2 a1
2 3 b1
使用dplyr包有没有简单的方法呢?管道+ group_by()
+ summarise()
可以在不使用filter()
和join()
的情况下完成工作吗?
Stata可以这样做:
collapse (count) count=id (first) desc, by(id)
答案 0 :(得分:1)
我们可以使用summarise
library(dplyr)
df %>%
group_by(id) %>%
summarise(count=n(), desc = first(desc))
# id count desc
# <dbl> <int> <fctr>
#1 1 2 a1
#2 2 3 b1