R语言dplyr使用group_by分组不生效,如何按分组统计符合条件的行数
R dplyr分组计数解决方法
问题原因
你当前的代码仅完成了字段筛选、符合条件的行过滤、分组结构声明三个步骤,没有添加汇总计数的逻辑,因此不会输出分组统计结果。
解决代码
方案1:衔接你已有的代码逻辑
在现有管道末尾添加summarise()和计数函数n()即可得到统计结果:
savanna = df %>% select(Species, blooming, Location) %>% filter(blooming == "Yes") %>% group_by(Location) %>% summarise(yes_blooming_num = n())
方案2:更简洁的count()实现
可以直接用dplyr内置的count()函数一步完成分组计数,无需单独声明分组:
# 写法1:先过滤再计数 savanna = df %>% filter(blooming == "Yes") %>% count(Location, name = "yes_blooming_num") # 写法2:直接用权重参数过滤计数 savanna = df %>% count(Location, wt = blooming == "Yes", name = "yes_blooming_num")
可选优化
如果你的Location因子存在没有对应“Yes”观测的空水平,可以在计数前添加droplevels()清理无效因子水平,避免结果出现计数值为0的冗余行:
savanna = df %>% filter(blooming == "Yes") %>% mutate(Location = droplevels(Location)) %>% count(Location, name = "yes_blooming_num")
内容的提问来源于stack exchange,提问作者Jose
相关产品推荐
相关产品推荐

