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

如何在gapminder数据集正确计算各国历年预期寿命的年度差值?

解决Gapminder数据集中国家历年预期寿命变化计算问题

错误原因分析

  • 首次尝试的问题:仅按country分组但未对年份排序,数据集默认行顺序并非按国家内的年份递增排列,导致lag(lifeExp)取到的是其他国家的行值,而非当前国家上一年的预期寿命。
  • 二次尝试的问题:同时按country和year分组后,每个分组仅包含单一行数据,lag()无法找到前一行参考值,因此所有inc结果为NA。

正确实现代码

library(gapminder)
library(tidyverse)

explife <- gapminder %>%
  group_by(country) %>%
  arrange(year, .by_group = TRUE)  # 核心:在每个国家组内按年份升序排列
  mutate(inc = lifeExp - lag(lifeExp)) %>%
  select(country, year, lifeExp, inc) %>%
  arrange(desc(inc))

print(explife)

代码关键说明

  • arrange(year, .by_group = TRUE):强制每个国家组内的行按年份从小到大排列,保证lag(lifeExp)能准确匹配当前国家的上一年数据。
  • 仅需按country分组即可,无需加入year——我们需要的是每个国家自身的时间序列差值,而非单一年份内的分组计算。
  • tidyverse已包含dplyr、tidyr、readr等依赖包,无需重复加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:01:21