例如,我有一个ID列表和一个开始日期列,这些ID第一次产生价值.我们有与开始日期相对应的MonthDuration.(例如对于ID%1,开始日期是2024-01-01,它将始终是等于1的MonthDuration.

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,以生成基于这2列的日期,直到每个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具有增加或减少月份的功能

Add months

library(lubridate)
df$Date <- as.Date(df$StartDate) %m+% months(as.numeric(df$MonthDuration) - 1)

Subtract months

library(lubridate)
df$Date <- as.Date(df$StartDate) %m-% months(as.numeric(df$MonthDuration))

R相关问答推荐

从R中的另一个包扩展S3类的正确方法是什么

删除facet_wrap标签之间的水平线

在(g)子中使用asserable字符

抖动点与嵌套类别变量箱形图的位置不对齐

如果第一个列表中的元素等于第二个列表的元素,则替换为第三个列表的元素

如何在R中对深度嵌套的tibbles中的非空连续行求和?

如何在一次运行中使用count进行多列计数

合并DFS列表并将索引提取为新列

以相同的方式对每个表进行排序

SHINY:使用JS函数应用的CSS样式显示HTML表格

将箭头绘制在图形外部,而不是图形内部

自定义gggraph,使geom_abline图层仅在沿x轴的特定范围内显示

R如何将列名转换为更好的年和月格式

我是否可以使用多个变异项来构建顺序列(标记多个问题)

我需要使用ggplot2制作堆叠条形图

整理曲线图、曲线图和点图

替换在以前工作的代码中有x行&q;错误(geom_sf/gganimate/dow_mark)

希望解析和复制R中特定模式的数据

使用显式二元谓词子集化sfc对象时出错

如何将一列相关性转换为R中的相关性矩阵