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

R语言使用dplyr计算财年半年度增长率出现NA值求助

问题根因及修复方案
  • 分组逻辑错误:group_by中包含了半年度字段half,导致每个分组仅存在单条对应半年度的数据,调用偏移量为2的lag函数时没有前置行可供取值,所有结果自然返回NA。计算同业务维度跨期增长率时,分组仅需保留identifer、name、business三个业务维度字段即可。
  • 缺少排序逻辑:lag函数默认按照分组内的现有行顺序计算偏移,必须先按half字段做升序排序,才能保证偏移2位取到的是去年同期半年度的数值,避免行顺序混乱导致计算结果错误。

另外你示例代码中的重复函数参数顺序写反,生成的各字段长度不匹配,修正后可直接运行测试:

library(dplyr)
library(magrittr)

t <- c(3000,2000, 6000)
u <- c("FY18H1", "FY18H2", "FY19H1", "FY19H2", "FY20H1", "FY20H2")
x <- c(1,2,3,4,5)
y <- c("a","b","c","d","e")
z <- c("apples","oranges")
identifer <- sort(rep(x, each = 6))
name <- sort(rep(y, each =6))
business <- sort(rep(z, each=15))
half <- rep(u, each = 5)
dollars <- rep(t, each = 10)

df <- data.frame(identifer,name, business,half, dollars)

df <- df %>% 
  group_by(identifer, name, business) %>%
  arrange(half, .by_group = TRUE) %>%
  mutate(
    YoY_GROWTH_DOLLARS = dollars - lag(dollars, 2),
    YoY_GROWTH_RATE = round(YoY_GROWTH_DOLLARS/lag(dollars,2),4)
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:36:05