You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在summarise()内对n()进行条件过滤统计符合要求的行数

正确调整方案

你编写的代码无法得到预期结果的核心原因是:n() 返回的是当前汇总分组的总行数,是一个长度为1的标量值,无法用长度等于原数据行数的逻辑向量 cyl == 4 做索引筛选。

要实现条件计数,直接对条件逻辑值求和即可:逻辑值中 TRUE 对应数值1、FALSE 对应数值0,求和结果刚好等于满足条件的行数。

调整后的可运行代码如下:

mtcars %>%
  summarise(n = n(),
            avg_mpg = mean(mpg),
            n_cyl4 = sum(cyl == 4),
            avg_mpg_cyl4 = mean(mpg[cyl == 4]))

其他可选写法

如果遇到更复杂的计数场景,可按需选择以下实现方式:

  • 带缺失值排除的条件计数:sum(ifelse(cyl == 4, 1, NA), na.rm = TRUE),适合需要先过滤掉cyl为空的行再计数的场景
  • 多条件批量计数:如果要同时统计多个cyl取值的行数,可以先用dplyr::count(cyl)做分组计数,再用tidyr::pivot_wider()转成宽格式汇总表,适合统计维度多的场景。

内容的提问来源于stack exchange,提问作者sleepysleeps

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:36:03