R tidyverse技术问询:如何基于现有年龄组创建新的年龄分组
没问题!用tidyverse工具集里的dplyr和forcats就能轻松搞定这个年龄分组合并的需求,我给你分步拆解说明:
第一步:构造示例数据集
先模拟你提到的数据集场景(实际使用时直接用你的真实数据即可):
library(tidyverse) # 创建包含原年龄分组的数据框 df <- tibble( age_range = c("18-24", "25-39", "25-39", "40-59", "40-59", "60+") )
方法1:用dplyr::case_when处理字符型分组
如果你的age_range是字符类型,用case_when可以灵活匹配并替换分组:
df <- df %>% mutate(new_age_range = case_when( # 将25-39和40-59合并为25-59 age_range %in% c("25-39", "40-59") ~ "25-59", # 其他分组保持原内容不变 TRUE ~ age_range ))
方法2:用forcats::fct_collapse处理因子型分组
如果你的age_range是因子类型,用forcats包的fct_collapse会更高效,还能保留因子的分类特性:
# 先将字符列转为因子(如果原本不是因子的话) df <- df %>% mutate(age_range = as.factor(age_range)) %>% mutate(new_age_range = fct_collapse( age_range, # 指定合并后的新分组名,以及需要合并的原分组 "25-59" = c("25-39", "40-59") ))
最终效果
运行上述代码后,你的数据集会新增new_age_range列,结果如下:
# A tibble: 6 × 2 age_range new_age_range <chr> <chr> 1 18-24 18-24 2 25-39 25-59 3 25-39 25-59 4 40-59 25-59 5 40-59 25-59 6 60+ 60+
如果你的数据集里还有其他年龄分组,只需要在对应函数里调整匹配规则即可,这两种方法都能很好适配批量修改分组的需求。
内容的提问来源于stack exchange,提问作者Gorkem Tunc
相关产品推荐
相关产品推荐

