我有在日历年开始和结束的时间序列数据,大多数填充函数(如 pad、padr 包)填充开始日期和结束日期之间的空白。但是我需要一个完整的年度记录。例如,如果我的数据开始日期是 2016 年 1 月 3 日,则所需的结果是将时间序列延长到年初,或者如果结束日期发生在之前,则延长到年底。NA 将用于填补空白。
一个适用于多个站点的数据的解决方案值得赞赏,因此下面的示例。
library(dplyr)
library(padr)
#Example datset
site<-"site_1"
date<-seq(as.Date('2016-01-03'),as.Date('2016-12-09'), by='day')
x <- runif(length(date),min=20,max=40)
df1<-data.frame(site,date,x)
df11<-df1[-c(2,3,4,5,6),]
site<-"site_2"
date<-seq(as.Date('2012-06-01'),as.Date('2012-10-25'), by='day')
x <- runif(length(date),min=30,max=40)
df2<-data.frame(site,date,x)
df22<-df2[-c(2,3,4,5,6),]
df<-rbind(df11,df22)
下面的尝试导致错误“开始值大于所有组的结束值”我认为问题在于它没有分组。
dfpad<-df%>%
pad(group ='site',start_val=floor_date(df[1,2],unit="year"),
end_val=(round_date(df[length(df$date),2], unit="year")-1))
期望的结果
dfgoal<- data.frame(date=seq(as.Date('2016-01-01'),as.Date('2016-01-10'), by='day'),
x=c("NA","NA",21,"NA","NA","NA","NA","NA",20,22))
head(dfgoal,10)