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

如何在R中通过max(date)和次新月份日期实现变量相减

R实现最新月份变量值与前N个月变量值差值计算

需求说明

想要创建一个新变量,取值为最新月份的变量值减去前N个月(如前1个月、前3个月等)的对应变量值。

示例数据集

country <- c("XYZ", "XYZ", "XYZ")
my_dates <- c("2021-10-01", "2021-09-01", "2021-08-01")
var1 <- c(1, 2, 3)
df1 <- country %>% cbind(my_dates) %>% cbind(var1) %>% as.data.frame()
df1$my_dates <- as.Date(df1$my_dates)
df1$var1 <- as.numeric(df1$var1)

已尝试的写法

  • 基础写法
library(tidyverse)
df2 <- df1 %>%
 mutate(dif_1month = var1[my_dates==max(my_dates)] -var1[my_dates==max(my_dates) %m-% months(1)]
  • lag函数变体写法
df2 <- df1 %>%
 mutate(dif_1month = var1[my_dates==max(my_dates)] - var1[my_dates==max(my_dates)-lag(max(my_dates), n=1L)])

核心疑问

如何获取日期为次新观测值时对应的变量值?

实测可行方案

获取最新日期对应的var1值

df2 <- df1 %>% 
  mutate(value_1month = var1[my_dates==max(my_dates)])

获取次新日期

df2 <- df1 %>% 
  mutate(month1 = max(my_dates) %m-%months(1))

获取次新日期对应的var1值

df2 <- df1 %>% 
  mutate(var1_1month = var1[my_dates==max(my_dates) %m-%months(1)])

计算最新与次新var1值的差值

df2 <- df1 %>% 
  mutate(diff_1month = var1[my_dates==max(my_dates)] - var1[my_dates==max(my_dates) %m-%months(1)])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:06:05