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

R语言基于多列年龄数据计算每户未成年儿童人数的实现方法

R实现家庭未成年儿童人数统计方案

核心逻辑是对每行对应的11个家庭成员年龄字段,统计小于18的有效值个数,自动忽略空值(适配家庭成员不足11人的场景)。

方案1:tidyverse 实现(入门友好,逻辑直观)

适合已经接触过dplyr语法的用户,代码可读性最高:

# 加载依赖包
library(dplyr)

# 替换示例中的年龄字段匹配规则为你实际的字段规则即可
df <- df %>%
  rowwise() %>%
  # 示例中默认年龄字段以age_开头,例如age_1、age_2……age_11,也可手动指定字段向量c(age1,age2,...,age11)
  mutate(child_count = sum(c_across(starts_with("age_")) < 18, na.rm = TRUE)) %>%
  ungroup()

参数说明:na.rm = TRUE用于跳过家庭人数不足11人时的空值字段,避免结果返回NA。

方案2:base R 实现(无需装包,兼容性好)

不需要安装任何第三方包,直接运行即可:

# 先指定11个年龄字段的列名,替换为你实际的字段名
age_cols <- c("age1", "age2", "age3", "age4", "age5", "age6", "age7", "age8", "age9", "age10", "age11")
# 按行统计小于18的数值个数
df$child_count <- apply(df[, age_cols], 1, function(x) sum(x < 18, na.rm = TRUE))

方案3:data.table 实现(超大数据集优先,运算速度最快)

如果你的数据集超过10万行,优先用这个方案,运算效率比前两种高5-10倍:

library(data.table)
# 将数据框转为data.table格式
setDT(df)
# 指定11个年龄字段名,替换为你实际的字段名
age_cols <- c("age1", "age2", "age3", "age4", "age5", "age6", "age7", "age8", "age9", "age10", "age11")
# 按行生成统计结果
df[, child_count := rowSums(.SD < 18, na.rm = TRUE), .SDcols = age_cols]

所有方案统计完成后,可随机抽取3-5行手动核对年龄字段的统计结果,验证逻辑是否符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:42:00