R语言合并年龄组并分组汇总计数时遇参数缺失错误的求助
问题解决:年龄组合并与计数汇总错误修复
错误原因分析
你遇到的argument ".f" is missing错误,核心是**forcats::fct_collapse()调用语法错误**:
- 该函数第一个参数必须指定要修改的因子向量(即你的
Age_gr列),你的代码里漏掉了这个关键参数 mutate()中对Age_gr的赋值逻辑混乱,把as.factor()和fct_collapse()的写法合并错误- 代码中部分旧分组的引号未正确闭合(比如
\"25-29\"少了前引号)
另外,你的原始数据包含多地区、多年份、多性别维度,仅按Age_gr分组会丢失这些维度信息,需要把这些列也加入分组。
修正后的完整代码
library(dplyr) library(forcats) library(stringr) # 清理冗余引号+合并年龄组+按全维度汇总计数 df <- df %>% # 清理Age_gr中的转义符和引号,得到干净的年龄组字符串 mutate(Age_gr = str_remove_all(Age_gr, '["\\\\]')) %>% # 转换为因子并合并分组 mutate(Age_gr = fct_collapse( as.factor(Age_gr), "0-4" = c("0-4"), "5-14" = c("5-9", "10-14"), "15-29" = c("15-19", "20-24", "25-29"), "30-44" = c("30-34", "35-39", "40-44"), "45-64" = c("45-49", "50-54", "55-59", "60-64"), "65+" = c("65-69", "70-74", "75-79", "80-84", "85-89", "90+") )) %>% # 按所有维度分组,确保每个地区、年份、性别的年龄组计数准确 group_by(Year, District, Sex, Age_gr) %>% summarise(Count = sum(Count), .groups = "drop")
关键修正点说明
- 修复fct_collapse语法:明确传入要修改的因子列(
as.factor(Age_gr))作为函数第一个参数 - 清理冗余引号:用
str_remove_all()去掉Age_gr中的转义符和引号,避免分组匹配失败 - 完善分组维度:加入
Year、District、Sex,保留原始数据的多维度信息 - 闭合所有引号:修正原代码中缺失的引号,确保分组匹配逻辑正确
样本数据验证结果
以你提供的6行样本数据为例,运行后会得到合并后的年龄组计数:
# A tibble: 3 x 5 Year District Sex Age_gr Count <chr> <chr> <chr> <fct> <dbl> 1 2022 District1 Male 0-4 3361 2 2022 District1 Male 15-29 13154 3 2022 District1 Male 30-44 5780
内容的提问来源于stack exchange,提问作者Erdem Erkoyun
相关产品推荐
相关产品推荐

