【问题标题】:Filling missing date months in a time series by Item按项目填充时间序列中缺失的日期月份
【发布时间】:2021-06-01 17:28:31
【问题描述】:

我对 R 相当陌生,我正在尝试执行以下任务:

我有以下数据集:

df1 <- data.frame(ITEM = c("A","A","A","A","A","B","B","B","B","B"),
              Date = c("Jan-2020","Feb-2020","May-2020","Jun-2020","Jul-2020","Jan-2020","Apr-2020","Jun-2020","Jul-2020","Aug-2020"))

这是一张图片:

我已经使用库“zoo”将日期列更改为 yearmon,并且我正在尝试为缺少的“yearmon”日期创建行。所以是这样的:

有人知道我该怎么做吗?

谢谢

【问题讨论】:

    标签: r dplyr time-series tidyverse


    【解决方案1】:

    您可以为每个ITEM 创建一系列yearmon 对象并在complete 中使用它。

    library(dplyr)
    library(zoo)
    library(tidyr)
    
    df1 %>%
      mutate(Date = as.yearmon(Date, '%b-%Y')) %>%
      group_by(ITEM) %>%
      complete(Date = seq(min(Date), max(Date), 1/12)) %>%
      ungroup
    
    #   ITEM  Date     
    #   <chr> <yearmon>
    # 1 A     Jan 2020 
    # 2 A     Feb 2020 
    # 3 A     Mar 2020 
    # 4 A     Apr 2020 
    # 5 A     May 2020 
    # 6 A     Jun 2020 
    # 7 A     Jul 2020 
    # 8 B     Jan 2020 
    # 9 B     Feb 2020 
    #10 B     Mar 2020 
    #11 B     Apr 2020 
    #12 B     May 2020 
    #13 B     Jun 2020 
    #14 B     Jul 2020 
    #15 B     Aug 2020 
    

    如果您想要一系列日期对象,您可以使用:

    df1 %>%
      mutate(Date = as.Date(as.yearmon(Date, '%b-%Y'))) %>%
      group_by(ITEM) %>%
      complete(Date = seq(min(Date), max(Date), 'month')) %>%
      ungroup()
    

    【讨论】:

      猜你喜欢
      • 2018-03-04
      • 2011-04-03
      • 2020-02-19
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      • 1970-01-01
      • 2018-04-24
      • 2016-12-08
      相关资源
      最近更新 更多