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

在R中基于条件使用dplyr::summarize()统计族群选择数量

解决方法:统计指定族群的选中数量(排除Ethinc_overall为"B"的行)

要实现你的需求,我们可以结合dplyr的filter()和summarize()函数,再用across()批量处理目标列,代码简洁高效:

library(tidyverse)

# 过滤掉Ethinc_overall为"B"的行,然后统计指定列中"Y"的数量
result <- DATA %>%
  filter(Ethinc_overall != "B") %>%
  summarize(
    across(
      cols = c(Hispanic, AmIndian, Asian, White, Pacific, AsiaPacific),
      ~ sum(.x == "Y", na.rm = TRUE),
      .names = "count_{.col}"
    )
  )

# 查看结果
print(result)

代码说明:

  • filter(Ethinc_overall != "B"):筛选出Ethinc_overall不等于"B"的所有行
  • summarize():生成汇总统计结果
  • across():批量处理指定的6个族群列,cols参数明确要统计的列名
  • ~ sum(.x == "Y", na.rm = TRUE):对每一列统计值为"Y"的行数(na.rm=TRUE避免空值干扰,即使当前数据无空值也建议保留)
  • .names = "count_{.col}":给统计结果列名添加前缀,比如count_Hispanic,更直观区分统计项

运行结果示例:

执行后会得到一个汇总数据框,每一列对应一个族群的"Y"数量,示例输出如下:

count_Hispanic count_AmIndian count_Asian count_White count_Pacific count_AsiaPacific
1             12              3          11           4             3                 4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 11:42:21