R语言按层级计算多年平均值增长率且不创建新数据框的方法
R计算分组累计增长率实现方案
你需要的2019-2021年累计增长率计算逻辑为 (2021年平均值 ÷ 2019年平均值 - 1)× 100%,以下两种方案均不需要创建中间数据框即可实现:
方案1:dplyr 实现
仅需输出各层级增长率结果、不修改原数据框的话,直接运行以下代码:
library(dplyr) df %>% group_by(level) %>% summarise(累计增长率 = (average[year == 2021] / average[year == 2019] - 1) * 100)
如果需要把增长率作为新列追加到原数据框对应层级的所有行,替换为mutate即可:
df <- df %>% group_by(level) %>% mutate(累计增长率 = (average[year == 2021] / average[year == 2019] - 1) * 100) %>% ungroup()
方案2:Base R 实现(无需加载任何扩展包)
直接运行aggregate函数即可返回结果:
aggregate(average ~ level, df, function(x) { # 先按年份排序避免数据顺序异常影响计算结果 sort_idx <- order(c(2019,2020,2021)) (x[sort_idx][3]/x[sort_idx][1] - 1) * 100 })
内容的提问来源于stack exchange,提问作者Rhey
相关产品推荐
相关产品推荐

