如何在R语言dplyr中实现分组count where条件计数功能
R dplyr分组统计代码修正方案
原有代码错误点
- 计算
mean_count时错误传入因子列col1作为均值计算对象,应该使用数值列col2 special_count逻辑错误:count()是用于统计数据框行数的函数,不能直接作用于数值表达式;同时nrow(dplyr_data)取的是全表行数,不是分组后的组内行数。
正确代码
library(dplyr) dplyr_data <- data.frame( col1 = as.factor(c("a", "a", "a", "b", "b", "c", "c", "c")), col2 = c(1,1,0,0,1, 0, 0, 1) ) summary_dplyr <- dplyr_data %>% group_by(col1) %>% summarise( mean_count = round(mean(col2, na.rm = TRUE), 2), # 如果需要数值类型的统计结果用这行 # special_count = n() - sum(col2 == 0, na.rm = TRUE) # 如果需要匹配示例中"x-y = z"格式的字符串结果用这行 special_count = paste0(n(), "-", sum(col2 == 0), " = ", n() - sum(col2 == 0)) ) %>% as.data.frame()
输出结果
运行上述代码后得到的输出和预期一致:
col1 mean_count special_count 1 a 0.67 3-1 = 2 2 b 0.50 2-1 = 1 3 c 0.33 3-2 = 1
内容的提问来源于stack exchange,提问作者stats_noob
相关产品推荐
相关产品推荐

