R 按项目填写时间序列中缺失的日期月

R 按项目填写时间序列中缺失的日期月,r,dplyr,time-series,tidyverse,R,Dplyr,Time Series,Tidyverse,我对R相当陌生,我正在尝试完成以下任务: 我有以下数据集: df1 <- data.frame(ITEM = c("A","A","A","A","A","B","B","B","B","B"), Date = c("Jan-2020",&quo

我对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"))

df1您可以为每个
项目创建一系列
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 

您可以为每个
项目创建一系列
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