按组计算并选择第一行

时间:2017-01-03 21:25:15

标签: r dplyr

我有以下数据:

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)

1 个答案:

答案 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