如何按R中的计数分组?

joh*_*ohn 1 r

如何统计案例的数量(类似于sql中的COUNT . . . GROUP BY)?

这是我的工作代码

library(magrittr) 
library(dplyr)
df <- data.frame(dose=c("A", "B", "C","D", "E", "B","B", "E", "A","C", "C", "B"),
                 len=c(4.2, 10, 29.5,4.2, 10, 29.5,4.2, 10, 29.5,4.2, 10, 29.5))
mt_mean <-   df %>% group_by(dose) %>% summarise(avg_count = sum(len) )  
mt_mean 
Run Code Online (Sandbox Code Playgroud)

但我想要计数而不是总和

所以,当我更改avg_count = sum(len)avg_count = count(len) 下引发错误

Error in summarise_impl(.data, dots) : 
  Evaluation error: no applicable method for 'groups' applied to an object of class "c('double', 'numeric')". 
Run Code Online (Sandbox Code Playgroud)

如何按R中的计数分组?

Dav*_*ald 6

留在dplyr图书馆并使用summarise

mt_mean <- df %>% 
  group_by(dose) %>% 
  summarise(avg_count = n())  
Run Code Online (Sandbox Code Playgroud)

或者,您可以更简单地dplyr使用count(根据@Frank):

mt_mean <- df %>% 
  count(dose) %>%
  rename(avg_count = n)
Run Code Online (Sandbox Code Playgroud)

这样,您还可以避免不必要的分组。

无论哪种方式,这两种方法都可以为您提供:

> mt_mean
# A tibble: 5 x 2
    dose avg_count
  <fctr>     <int>
1      A         2
2      B         4
3      C         3
4      D         1
5      E         2
Run Code Online (Sandbox Code Playgroud)