首页 > 解决方案 > 如何在R的同一列中的两个日期之间生成日期序列

问题描述

我正在努力使用 R 脚本在同一列中的两个日期之间生成日期序列。

我有请求 ID 和序列 ID、日期和状态。 输入表

我的要求是生成这样的表。 所需的输出表

在这方面的任何帮助将不胜感激。

谢谢

标签: r

解决方案


您可以使用tidyverse库来执行此操作。首先将您的日期列设置dmylubridate包中的日期。然后您可以使用tidyr函数completefill扩展您的数据表,如图所示。 complete可以选择按天填补空白。group_byReqID 为您的每个单独的标识符执行此操作。

library(tidyverse)
library(lubridate)
df <- data_frame(ReqID = 100, ID_Seq = 1:3, Created = dmy("01/01/2018","10/01/2018","18/01/2018"), Status = c("Scheduled","In Execution", "Completed"))
df %>%
  group_by(ReqID) %>% 
  complete(Created = seq.Date(min(Created),max(Created), by = "day")) %>%
  fill(ReqID,ID_Seq,Status)

## A tibble: 18 x 4
#   Created    ReqID ID_Seq Status      
#   <date>     <dbl>  <int> <chr>       
# 1 2018-01-01   100      1 Scheduled   
# 2 2018-01-02   100      1 Scheduled   
# 3 2018-01-03   100      1 Scheduled   
# 4 2018-01-04   100      1 Scheduled   
# 5 2018-01-05   100      1 Scheduled   
# 6 2018-01-06   100      1 Scheduled   
# 7 2018-01-07   100      1 Scheduled   
# 8 2018-01-08   100      1 Scheduled   
# 9 2018-01-09   100      1 Scheduled   
#10 2018-01-10   100      2 In Execution
#11 2018-01-11   100      2 In Execution
#12 2018-01-12   100      2 In Execution
#13 2018-01-13   100      2 In Execution
#14 2018-01-14   100      2 In Execution
#15 2018-01-15   100      2 In Execution
#16 2018-01-16   100      2 In Execution
#17 2018-01-17   100      2 In Execution
#18 2018-01-18   100      3 Completed  

推荐阅读