r - 如何在R的同一列中的两个日期之间生成日期序列
问题描述
我正在努力使用 R 脚本在同一列中的两个日期之间生成日期序列。
我有请求 ID 和序列 ID、日期和状态。 输入表
我的要求是生成这样的表。 所需的输出表
在这方面的任何帮助将不胜感激。
谢谢
解决方案
您可以使用tidyverse
库来执行此操作。首先将您的日期列设置dmy
为lubridate
包中的日期。然后您可以使用tidyr
函数complete
并fill
扩展您的数据表,如图所示。 complete
可以选择按天填补空白。group_by
ReqID 为您的每个单独的标识符执行此操作。
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
推荐阅读
- aes-gcm - AES-GCM 解密错误 iaik.cms.CMSException:无法解密加密的内容加密密钥:无效填充
- android - 如何使用 Kotlin 将文件移动到 Android 中的内部存储(保留应用程序的内存)?
- java - 创建委托身份验证提供程序(Spring Security)
- ruby-on-rails - Ruby 舍入约定
- pdf - Adobe Reader 不显示 PDFKit 生成的某些文本
- javascript - 如何防止两个组件重叠
- linux - 关于 WSL 问题的 vscode:打开括号或大括号时编辑光标向后移动
- ntfs - NTFS 磁盘上的 $MFT 中有错误的 $FILE_NAME 条目
- javascript - 如何通过导出导出相同的函数但具有不同的参数
- sql - Oracle SQL:在没有子查询连接的情况下从另一个表中排除 ID