You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中计算城市分组的总人口百分比变化

解决方案

当然可以实现这个需求,核心是利用复利增长的计算逻辑:总人口变化率等于各年(1+年度变化率)的乘积减1。以下是具体的R代码实现:

代码实现

library(dplyr)

# 原始数据集
city_pop <- tibble(
  city = c("NYC", "NYC", "LA", "LA"),
  percentpopchange = c("0.1", "0.2", "0.5", "0.3"),
  year = c(1980, 1981, 1980, 1981)
)

# 计算各城市总人口百分比变化
cum_city_pop <- city_pop %>%
  # 将字符型的变化率转为数值型(原始数据是字符串,无法参与计算)
  mutate(percentpopchange = as.numeric(percentpopchange)) %>%
  # 按城市分组,确保每个城市单独计算
  group_by(city) %>%
  # 核心计算:(1+各年变化率)的乘积 - 1,最后转成字符型匹配预期输出
  summarize(total_percentpopchange = as.character(prod(1 + percentpopchange) - 1)) %>%
  # 取消分组,恢复普通tibble格式
  ungroup()

# 输出结果
cum_city_pop

逻辑说明

  • 人口增长是复利模式:比如NYC 1980年增长10%,1981年增长20%,总增长为 (1+0.1)*(1+0.2) - 1 = 0.32,和你预期的结果一致;LA的总增长为 (1+0.5)*(1+0.3) -1 = 0.95,完全符合需求。
  • 如果不需要将结果转为字符型,去掉as.character()即可得到数值型的总变化率。

内容的提问来源于stack exchange,提问作者James Rider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 18:39:58