【问题标题】:Adding data for dates between updates?为更新之间的日期添加数据?
【发布时间】:2022-01-14 11:12:18
【问题描述】:

我正在对一些仓库数据进行一些研究,其中数量仅不经常更新,我们希望将其更改为按天对每个 product_id 具有值的系列。 它是什么的简化表:

product_id dateUpdated qty
1 2021-07-01 1
2 2021-07-02 2
1 2021-08-15 5
1 2021-08-21 3
library(tidyverse)
mydata <- data.frame(product_id = c(1, 2, 1, 1), dateUpdated = c(as.Date('2021-07-01'), as.Date('2021-07-02'), as.Date('2021-08-15'), as.Date('2021-08-21')), qty = c(1, 2, 5, 3))

假设该产品在第一次更新之前不存在,我有点不知道我应该使用什么方法来开始这个。我的目标是:

product_id dateUpdated qty
1 2021-07-01 1
1 2021-07-02 1
2 2021-07-02 2
1 2021-07-03 1
2 2021-07-03 2

..直到八月的最后一天,仅在数量更新时才更新。

我正在考虑在基础 R 中使用 for 循环,但有没有使用 dyplr 和其他一些库的好方法呢?

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    这应该可行:

    library(dplyr)
    library(tidyr)
    
    mydata %>%
      group_by(product_id) %>%
      complete(dateUpdated = seq(min(dateUpdated), as.Date("2021-08-31"), by = "day")) %>%
      fill(qty, .direction = "down") %>%
      ungroup()
    

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多