给定开始日期和月份(数字),如何根据 R 中的开始日期和月份数创建日期列

问题描述 投票:0回答:1

例如,我有一个 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 
r dplyr data-manipulation
1个回答
0
投票

lubridate
有加减月份的功能

library(lubridate)
df$Date <- as.Date(df$StartDate) %m+% months(as.numeric(df$MonthDuration))
© www.soinside.com 2019 - 2024. All rights reserved.