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

使用dplyr按家庭分组统计户主年龄、人均收入等特征的方法咨询

家庭特征聚合代码逻辑校验与优化

现有代码正误判断

  • 正确部分:
    • 家庭人均收入计算逻辑sum(Income)/n()完全正确,为组内总收入除以家庭人数,符合需求
    • 家庭残障成员标识计算逻辑max(Disable)完全正确,只要组内有1名残障成员结果就为1,符合需求
  • 错误部分(Age_HH字段):
    你当前使用的case_when(HH == 1 ~ AGE, TRUE ~ 0)是逐行判断逻辑,返回的向量长度等于家庭组内人数,而summarise()要求每个聚合字段返回单值,运行时要么直接触发报错,要么返回不符合预期的结果(如果家庭组内首行不是户主,会误取0作为户主年龄)。

更优的Age_HH计算方案

针对超大数据量场景,推荐两种高效简洁的写法,都能稳定返回正确结果:

  1. 下标取值法:逻辑最直观,直接提取户主对应的年龄
dt %>%
 group_by(Family) %>%
  summarise(
   Age_HH = AGE[HH == 1],
   Family_income_percapita = sum(Income)/n(),
   Disable = max(Disable)
  )

如果需要兼容“单家庭出现多个户主”的异常数据,可增加first()限制返回单值:Age_HH = first(AGE[HH == 1]);如果存在无户主的家庭,可加默认值逻辑:Age_HH = ifelse(length(AGE[HH==1]) == 0, NA_real_, AGE[HH==1])
2. 乘积求和法:利用HH字段0/1的取值特性,运算效率更高,更适合超大规模数据集

dt %>%
 group_by(Family) %>%
  summarise(
   Age_HH = sum(AGE * HH),
   Family_income_percapita = sum(Income)/n(),
   Disable = max(Disable)
  )

校验说明

使用你提供的模拟数据集测试,上述优化后代码输出结果和你给出的预期结果完全一致,可直接上线使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:24:04