如何在R中计算各国GDP与同年美国GDP的比值?
计算各国GDP与同年美国GDP的比值
方法1:使用dplyr工具包
这是tidyverse生态下的便捷处理方式,核心思路是按年份分组,提取每组内美国的GDP作为基准值,再计算比值:
- 先安装并加载dplyr(如果未安装):
install.packages("dplyr") library(dplyr)
- 处理数据:
gdp_test <- gdp_test %>% group_by(Year.) %>% # 按年份分组,确保只在同年份内计算 mutate(GDP_ratio = GDP / GDP[Country. == "usa"]) %>% # 每组内用当前GDP除以美国的GDP ungroup() # 取消分组,恢复普通数据框形态
- 查看结果:
print(gdp_test)
输出会新增GDP_ratio列,美国的比值始终为1,哥斯达黎加的数值则是对应年份GDP与美国GDP的比值。
方法2:基础R原生实现
如果不想依赖第三方包,可以用ave()函数结合分组逻辑完成:
gdp_test$GDP_ratio <- with(gdp_test, ave(GDP, Year., FUN = function(x) x / x[Country. == "usa"]))
ave()会自动按Year.分组,对每组的GDP执行自定义函数——用组内所有GDP值除以组内美国的GDP值,最终生成新列。
结果示例
处理后的gdp_test数据如下:
Country. Year. GDP GDP_ratio 1 costa_rica 1979 200 0.5714286 2 costa_rica 1980 210 0.5600000 3 costa_rica 1981 250 0.5938242 4 usa 1979 350 1.0000000 5 usa 1980 375 1.0000000 6 usa 1981 421 1.0000000
内容的提问来源于stack exchange,提问作者Jorge Cornick
相关产品推荐
相关产品推荐

