如何在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
相关产品推荐
相关产品推荐

