R语言计算各国年度议会女性占比均值遇NA值问题求助
解决按国家和年度计算议会女性占比均值返回NA的问题
问题根源
从你提供的dput(head(genparla))输出可以明确看到:Percent Of Women in Chamber列是字符类型(所有数值都被引号包裹),而mean()函数仅能对数值型数据进行计算,这就是代码返回NA值并提示非数值数据警告的核心原因。
修正步骤及代码
先将字符型的百分比列转换为数值型,再按国家和年度分组计算均值:
# 合并转换与分组计算的管道代码 Newlevelgenparla <- genparla %>% # 将目标列从字符型转为数值型 mutate(`Percent Of Women in Chamber` = as.numeric(`Percent Of Women in Chamber`)) %>% # 按国家和年度分组 group_by(Country, Year) %>% # 计算均值,同时忽略NA值 summarize(Percent_women_in_parliament = mean(`Percent Of Women in Chamber`, na.rm = TRUE), .groups = "drop") # 可选:取消分组状态,返回普通数据框
额外优化建议
如果数据中还有其他本该是数值型的列(比如Chamber Total Seats、Total women),可以一次性批量转换,方便后续分析:
genparla <- genparla %>% mutate(across(c(`Chamber Total Seats`, `Total women`, `Percent Of Women in Chamber`), as.numeric))
执行完转换后,你可以用str(genparla)查看列类型,确认所有目标列已转为数值型。
内容的提问来源于stack exchange,提问作者Felipe Branner
相关产品推荐
相关产品推荐

