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

在R语言中基于前前年度数据为数据集新增PPR列的实现问题

问题解决方法

原代码问题说明

  • 数值型年份直接使用as.Date()转换不符合函数输入要求,会生成错误的日期值,本需求中年份是纯数值,无需转换为日期格式即可直接计算。
  • 原有逻辑错误:PPR列需要返回的是当前年份减2年对应的同公司REC值,而非修改年份值,原代码只对年份做了运算,没有关联匹配对应REC数据。

正确实现代码

提供两种常用实现方式:

方法1:按年份排序后使用lag偏移取值

library(dplyr)
dat <- data %>%
  group_by(Company) %>%
  arrange(Year, .by_group = TRUE) %>% # 按公司分组后对年份升序排序
  mutate(PPR = lag(REC, n = 2)) %>% # 取当前行往前数2行的REC值
  ungroup()

方法2:直接匹配对应年份取值(无需提前排序,适配性更强)

library(dplyr)
dat <- data %>%
  group_by(Company) %>%
  mutate(PPR = REC[match(Year - 2, Year)]) %>% # 匹配当前年份-2对应的REC值
  ungroup()

运行结果

两种方法都可以得到你需要的结果,无匹配前前年度数据时返回NA:

CompanyYearRECPPR
ABC2019300NA
ABC2020200NA
ABC2021100300
XYZ20173000NA
XYZ20184000NA
XYZ201920003000
KJF20188000NA
KJF20196000NA
KJF202050008000
KJF202170006000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 23:15:02