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

如何在R中高效对大型健康调查数据进行分组、排序与计数?

高效实现跨州性别与指标统计(R语言tidyverse方案)

针对你需要的多维度统计需求,用dplyr的分组汇总功能可以一次性完成所有州的计算,完全替代冗余的单州重复代码。以下是直接可用的解决方案:

核心代码

library(dplyr)

# 假设SEX=0代表女性、SEX=1代表男性,可根据实际编码调整
result <- data %>%
  group_by(ENT) %>%
  summarise(
    TotalObservationsofvar = n(),  # 该州总人数(对应需求a)
    Observations1_12 = sum(var %in% 1:12, na.rm = TRUE),  # 该州var在1-12的总人数
    TotalWom = sum(SEX == 0, na.rm = TRUE),  # 该州女性总人数
    TotalMen = sum(SEX == 1, na.rm = TRUE),  # 该州男性总人数
    Womenansw1_12 = sum(SEX == 0 & var %in% 1:12, na.rm = TRUE),  # 女性且var在1-12的人数(对应需求b)
    Menansw1_12 = sum(SEX == 1 & var %in% 1:12, na.rm = TRUE)     # 男性且var在1-12的人数(对应需求b)
  ) %>%
  # 调整列顺序以匹配你需要的输出格式
  select(ENT, Observations1_12, TotalObservationsofvar, Womenansw1_12, Menansw1_12, TotalMen, TotalWom)

代码说明

  • group_by(ENT):按州分组,后续所有统计逻辑会自动应用到每个州的子集
  • n():直接返回当前分组(州)的总观测数,即该州总人数
  • sum(条件, na.rm=TRUE):统计满足条件的行数,na.rm=TRUE用于忽略缺失值,避免因NA导致统计结果出错
  • var %in% 1:12:等价于var > 0 & var <13,写法更简洁直观
  • select():最后调整列的顺序,完全匹配你给出的输出格式

输出示例

运行后会得到结构化的结果,格式与你需求一致:

# A tibble: 32 × 7
    ENT Observations1_12 TotalObservationsofvar Womenansw1_12 Menansw1_12 TotalMen TotalWom
   <int>            <int>                  <int>         <int>        <int>    <int>    <int>
 1     1             4555                   9000           533         133     1000     3333
 2     2             3222                   9000           233         455     9888     1111
 3     3             5678                   9000           544         544     1444     7794
# … with 29 more rows

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 15:28:33