例如,我有一个 ID 列表和这些 ID 第一次生成值的开始日期列。我们的 MonthDuration 应该与开始日期相对应。 (例如,对于 ID 1,StartDate 为 2024-01-01,MonthDuration 始终等于 1。
ID <- c("1","1","1","2","2")
StartDate <- c('2024-01-01', '2024-01-01', '2024-01-01', '2024-02-01','2024-02-01')
MonthDuration<- c("1","2","3","1","2")
Value <- c("153","203","391","444","212")
df <- data.frame(ID,StartDate,MonthDuration,Value)
ID StartDate MonthDuration Value
1 2024-01-01 1 153
1 2024-01-01 2 203
1 2024-01-01 3 391
2 2024-02-01 1 444
2 2024-02-01 2 212
我想要的是日期列与 MonthDuration 和 StartDate 相匹配,以根据这两列生成日期,直到每个 ID 的 MonthDuration 的最大数量。
ID StartDate MonthDuration Value Date
1 2024-01-01 1 153 2024-01-01
1 2024-01-01 2 203 2024-02-01
1 2024-01-01 3 391 2024-03-01
2 2024-02-01 1 444 2024-02-01
2 2024-02-01 2 212 2024-03-01
lubridate
有加减月份的功能
library(lubridate)
df$Date <- as.Date(df$StartDate) %m+% months(as.numeric(df$MonthDuration))