使用滞后功能仅对缺少的日期递增地增加日期

康拉德

在下面的示例中,我想使用前几天推导缺少的日期,而effort变量中携带的整数值仅用于缺少的日期。

# Libraries
library("tidyverse")
library("lubridate")

work_start_date <- dmy("2/11/2020")

dta_tasks <- tribble(
  ~task_no, ~task,  ~effort,
  1,   "Task 1", NA,
  1.1, "Task 1.1", 1,
  1.3, "Task 1.3", 1,
  1.4, "Task 1.4", 2,
  1.5, "Task 1.5", 1,
  2,   "Task 2",   NA,
  2.1, "Task 2.1", 2

)

dta_tasks %>%
  arrange(task_no) %>%
  mutate(start_date = if_else(row_number() == 1, work_start_date, NA_Date_),
         start_date = if_else(is.na(start_date), lag(start_date) + days(effort), start_date))

所需结果

task_no task     effort start_date
<dbl> <chr>     <dbl> <date>    
1     1   Task 1      NA 2020-11-02
2     1.1 Task 1.1      1 2020-11-03
3     1.3 Task 1.3      1 2020-11-04        
4     1.4 Task 1.4      2 2020-11-06        
5     1.5 Task 1.5      1 2020-11-07        
6     2   Task 2       NA 2020-11-08        
7     2.1 Task 2.1      2 2020-11-08  # For NA it has to skip value 

细化

在下面的代码中,我想替换Sys.Date()为以前的计算日期。

dta_tasks %>%
  arrange(task_no) %>%
  mutate(
    start_date = if_else(row_number() == 1, work_start_date, NA_Date_),
    start_date = if_else(is.na(start_date), Sys.Date() + days(effort), start_date)
  )
迈克尔·杜瓦(Michael Dewar)

尝试这个:

dta_tasks %>%
    arrange(task_no) %>% 
    mutate(effort_no_na = pmax(effort, 0, na.rm = TRUE)) %>% 
    mutate(cum_effort = cumsum(effort_no_na),
           start_date = work_start_date + days(effort_no_na),
           start_date = if_else(is.na(effort), NA_Date_, start_date)) %>% 
    fill(start_date, .direction =  "up")

这个想法是用来cumsum跟踪自开始以来的总努力。由于资产净值,有很多簿记。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用滞后功能仅对丢失的日期递增地增加日期

来自分类Dev

使用 sqldf 在滞后窗口中准确地加入 id 和最近的日期

来自分类Dev

如何使用Arrow增加日期?

来自分类Dev

如何使用datePicker增加日期?

来自分类Dev

如何使用datePicker增加日期?

来自分类Dev

jQuery-UI从datepicker日历动态地增加日期

来自分类Dev

jQuery-UI从datepicker日历动态地增加日期

来自分类Dev

QML:如何使用日期功能

来自分类Dev

使用日期功能搜索内容

来自分类Dev

使用日期和时间功能

来自分类Dev

Django使用timedelta注释日期并增加

来自分类Dev

使用 DayOfYear 继续在日期字段上增加?

来自分类Dev

SQL中日期的滞后函数

来自分类Dev

根据参考日期增加日期

来自分类Dev

使用R替换日期中缺少的日期和月份

来自分类Dev

PostgreSQL使用原始SQL填写缺少的日期

来自分类Dev

使用Python估算缺少的日期和值

来自分类Dev

带日期名称的PHP递增日期

来自分类Dev

带日期名称的PHP递增日期

来自分类Dev

MySQL用户定义函数使用日期自动递增值

来自分类Dev

PHP的日期时间使用现有的日期来创建新的日期与增加的天

来自分类Dev

增加日期而忽略周末

来自分类Dev

熊猫:增加日期时间

来自分类Dev

用Carbon增加日期

来自分类Dev

在python中增加日期

来自分类Dev

PHP日期增加

来自分类Dev

查找缺少的日期(PostgreSQL)

来自分类Dev

添加缺少的日期VBA

来自分类Dev

缺少日期的总和