假设我想用不同的功能分组后总结一个数据帧。我怎样才能做到这一点?

mtcars %>% group_by(cyl) %>% summarise(size = n())
# A tibble: 3 x 2
    cyl  size
  <dbl> <int>
1     4    11
2     6     7
3     8    14

但是,如果我尝试:
mtcars %>% group_by(cyl) %>% summarise(size = n()) %>% summarise_at(vars(c(mpg, am:carb)), mean)
Error in is_string(y) : object 'carb' not found

如何首先通过n()获得每个组的大小,然后再获得其他所选特征的均值?

最佳答案

这是通过分组变量对两个摘要操作使用dplyr::inner_join()的一种方法:

mtcars %>%
  group_by(cyl) %>%
  summarise(size = n()) %>%
  inner_join(
    mtcars %>%
      group_by(cyl) %>%
      summarise_at(vars(c(mpg, am:carb)), mean),
    by='cyl' )

输出为:
# A tibble: 3 x 6
    cyl  size   mpg    am  gear  carb
  <dbl> <int> <dbl> <dbl> <dbl> <dbl>
1     4    11  26.7 0.727  4.09  1.55
2     6     7  19.7 0.429  3.86  3.43
3     8    14  15.1 0.143  3.29  3.5

关于r - 在同一dplyr链中使用summary和summarise_at,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57385799/

10-12 20:46