日期类向量,用于填充缺少的时间序列数据帧R.

时间:2016-12-13 15:40:37

标签: r time ggplot2 merge series

正在努力尝试在这里填写时间序列。我正在尝试根据十月到五月的降雪清理一个数据集,其中每年十月(即1954年10月至1955年5月,雪年=“1954”)开始“雪年”。完整的时间序列包括每天从1954年10月1日直到今天。

man<-data.table()
man <-  read.delim('mansfieldstake.txt',header=TRUE, check.names=FALSE)
man[is.na(man)]<-0
man$date<-paste(man$yy, man$mm, man$dd,sep="-", collapse=NULL)
man$date <- as.Date(man$date,format= "%Y-%m-%d")  
colnames(man)<- c("date","month","day","year","depth","snowyear","snowday)

得到一个这样的数据帧/表,有些日期丢失(或没有人$ depth = 0,当天没有进行测量):

mm dd   yy depth       date snowyear snowday
12 22 1954    24 1954-12-22       NA      NA
12 23 1954    24 1954-12-23       NA      NA
12 24 1954    24 1954-12-24       NA      NA
12 25 1954    30 1954-12-25       NA      NA
12 26 1954    36 1954-12-26       NA      NA
12 27 1954     0 1954-12-27       NA      NA
12 28 1954    36 1954-12-28       NA      NA
12 29 1954    30 1954-12-29       NA      NA
12 30 1954     0 1954-12-30       NA      NA
12 31 1954     0 1954-12-31       NA      NA
 1  1 1955     0 1955-01-01       NA      NA
 1  3 1955    36 1955-01-03       NA      NA
 1  4 1955    36 1955-01-04       NA      NA
 1  6 1955    36 1955-01-06       NA      NA

这是为应该在时间序列中的所有日期创建日期向量。挂在这里 - 基本上,我需要找到daily_vector中的值而不是man $ date ...我到处都是这里:

daily_vector <- seq(as.Date("1954-10-01"), as.Date("2016-12-12"), by="days")
missing_datetest <- !daily_vector %in% man$date
missingdates<- daily_vector[missing_datetest]
missingdates

想要拉出这些缺失日期的向量,然后将它们与man $ date合并(或加入?),为man $ depth插入空行,然后根据它们的值对其进行平均或删除(例如,如果男人在缺少时间序列周围的日子深度为60(英寸)积雪,这将是之前和之后〜2天的平均值 - 因为雪没有消失一天)。

日期类需要匹配,然后将向量与数据帧(或data.table?)合并似乎给我带来了问题。看起来我只是缺少一些基本的东西。

一旦完成,我想从每个男人$ snowyear的10月1日开始分配一个值为“snowday”的列,然后使用这些来为每个“snowyear”绘制10月到5月的时间序列。我可以这样做有一个循环,但它可以用更快的函数方法完成吗?或者如果有一种方法可以在ggplot中绘制这样一个年际时间范围,那就放弃man $ snowday。任何人都有一些洞察力?

0 个答案:

没有答案