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

在R中计算多列动态差值:处理含NA的情况

在R中根据年份缺失情况动态计算个体增长率

步骤1:构造示例数据

先复现你提供的原始数据框:

df <- data.frame(
  ID = c("A", "B", "C"),
  Year1 = c(2021, 2022, 2021),
  Year2 = c(2022, 2023, 2022),
  Year3 = c(NA, 2024, NA),
  Size1 = c(10, 20, 5),
  Size2 = c(15, 21, 20),
  Size3 = c(NA, 25, NA)
)

步骤2:使用dplyr::case_when实现条件计算

用case_when函数根据Year3是否为NA分支计算增长率,遵循dplyr管道规范直接引用列名:

library(dplyr)

df2 <- df %>%
  mutate(
    Difference = case_when(
      # Year3存在有效值时,用Year3与Year1的差值计算
      !is.na(Year3) ~ (Size3 - Size1)/(Year3 - Year1),
      # Year3为NA时,用Year2与Year1的差值计算
      TRUE ~ (Size2 - Size1)/(Year2 - Year1)
    )
  )

输出结果

运行后得到的df2与你期望的结果完全一致:

IDYear1Year2Year3Size1Size2Size3Difference
A20212022NA1015NA5
B2022202320242021252.5
C20212022NA520NA15

补充说明

  • case_when按顺序匹配条件,优先执行第一个满足的分支
  • 若后续需处理更复杂的缺失场景,只需在case_when中添加新的条件分支即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 00:26:06