R语言按年龄组及全量计算病例占比并新增为dataframe列的方法
解决方案(R语言)
你提供的数据已经默认按Age group分组,直接用dplyr的mutate函数就能完成两列的计算:
library(dplyr) # 计算新增列 Cm_result <- Cm %>% mutate( # 组内占比:当前行Cases / 所属Age group的总Cases Cases1 = Cases / sum(Cases, na.rm = TRUE), # 全量占比:当前行Cases / 所有行的总Cases,加.by = NULL取消分组限制 Cases2 = Cases / sum(Cases, na.rm = TRUE, .by = NULL) ) # 查看结果 print(Cm_result)
如果你使用的dplyr版本低于1.1.0不支持.by参数,替换为下面的写法即可:
Cm_result <- Cm %>% mutate(Cases1 = Cases / sum(Cases, na.rm = TRUE)) %>% ungroup() %>% mutate(Cases2 = Cases / sum(Cases, na.rm = TRUE))
计算后同一个Age group分组内所有行的Cases1加总等于1,全表所有行的Cases2加总等于1,符合需求。
内容的提问来源于stack exchange,提问作者firmo23
相关产品推荐
相关产品推荐

