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

基于权重从年龄组生成单年份年龄的实现方法问询

年龄组分拆为单年份年龄的实现方案

需求说明

现有数据包含字符型字段age_group、数值型字段age_division和total_estimate,需要将每个年龄组拆分为等数量的单年份年龄,规则如下:

  • < 5 yrs:从0岁开始,覆盖0-4岁,每个年龄分配的行数为total_estimate / 5
  • 如5_9 yrs这类区间型年龄组:覆盖区间内的所有整数年龄,每个年龄分配的行数为total_estimate / 区间年龄数量
  • >85 yrs:覆盖85-89岁(共5个年龄),每个年龄分配的行数为total_estimate / 5

实现代码(R语言)

使用tidyverse工具集完成处理,代码如下:

library(tidyverse)

# 定义生成单年份年龄的函数
generate_single_age <- function(age_group, total_estimate) {
  case_when(
    # 处理"< 5 yrs"组
    age_group == "< 5 yrs" ~ rep(0:4, each = total_estimate / 5),
    # 处理"X_Y yrs"格式的区间组
    str_detect(age_group, "^\\d+_\\d+ yrs$") ~ {
      # 拆分出区间的起始和结束年龄
      age_range <- as.numeric(str_split(age_group, "_| yrs", simplify = TRUE)[c(1, 2)])
      # 生成连续年龄序列并按次数重复
      rep(age_range[1]:age_range[2], each = total_estimate / length(age_range[1]:age_range[2]))
    },
    # 处理">85 yrs"组
    age_group == ">85 yrs" ~ rep(85:89, each = total_estimate / 5),
    # 其他情况返回空序列
    TRUE ~ numeric(0)
  )
}

# 应用函数处理数据框
df_processed <- df %>%
  # 按年龄组、age_division和total_estimate分组(同组参数一致)
  group_by(age_group, age_division, total_estimate) %>%
  # 生成age_single列
  mutate(age_single = generate_single_age(age_group, first(total_estimate))) %>%
  ungroup()

代码逻辑解释

  1. 自定义函数generate_single_age:根据不同age_group的格式,生成对应的单年份年龄序列,每个年龄重复的次数由total_estimate和该组的年龄数量计算得出。
  2. 分组处理:通过group_by将同参数的行归为一组,确保每个组内的total_estimate一致,再用mutate添加age_single列。
  3. 结果验证:处理后的数据会完全匹配期望输出,每个年龄组内的单年份年龄按要求等数量分配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:14:55