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

使用mutate和lead函数计算百分比变化时新列返回NA问题求助

问题分析与解决

你的代码存在三个关键问题,导致生成的Pct_change全为NA:

  • 错误分组:使用group_by(Year)后,每个年份单独成组,每组仅一条数据,lead(Count)无法获取同组内的下一个值,因此全部返回NA。
  • 公式逻辑错误:原代码的括号位置错误,导致计算逻辑偏离百分比变化的正确公式。正确的年度百分比变化公式应为((当前值 - 对比值)/对比值) * 100。
  • 语法错误:mutate语句末尾缺少闭合括号,会导致代码执行失败。

修正方案

情况1:计算当前年份相对上一年的百分比变化(常用年度同比)

如果需要计算当年较上年的增长/降幅,使用lag()函数获取上一年的Count值,同时去掉错误的分组:

df1 <- df %>% 
  mutate(Pct_change = ((Count - lag(Count)) / lag(Count)) * 100)

运行后结果:

YearCountPct_change
201055302NA
2011589436.58385
2012596331.17062
201350194-15.8285

情况2:计算当前年份相对下一年的百分比变化

如果你的需求是对比下一年的数据,修正公式括号并去掉分组:

df1 <- df %>% 
  mutate(Pct_change = ((Count - lead(Count)) / lead(Count)) * 100)

运行后结果:

YearCountPct_change
201055302-6.17717
201158943-1.15708
20125963318.8050
201350194NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:40:40