如何统计案例的数量(类似于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中的计数分组?
留在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)