[英]How to align monthly time series next to weekly time series in R
我的目標是結合兩個時間序列(第一列中的每周和第二列中的每月以及每周時間序列的日期格式)。
我有每周時間序列,其值從2004-01-04到2018-06-24。
我也有一個每月時間序列,其值從2004-01-01到2018-06-01。 (總是以每月的第一天為-01)
對於每月的時間序列,我想用同一月中每周的相同值填充NA。
我已經在R中嘗試過na.locf函數:
na.locf(merge(monthly, foo=zoo(NA, order.by=seq(start(monthly), end(monthly), "week")))[, 1])
但是,這樣做並不能解決問題。
最后,它應該類似於以下圖片:
您是否研究過融解功能? 這可能會幫助您朝正確的方向發展。 (壓力包含在默認的“數據集”程序包中)
library(reshape2)
data <- head(pressure)
head(data)
melt(data, variable = "pressure")
> head(data)
temperature pressure
1 0 0.0002
2 20 0.0012
3 40 0.0060
4 60 0.0300
5 80 0.0900
6 100 0.2700
> melt(data, variable = "pressure")
pressure value
1 temperature 0.0e+00
2 temperature 2.0e+01
3 temperature 4.0e+01
4 temperature 6.0e+01
5 temperature 8.0e+01
6 temperature 1.0e+02
7 pressure 2.0e-04
8 pressure 1.2e-03
9 pressure 6.0e-03
10 pressure 3.0e-02
11 pressure 9.0e-02
12 pressure 2.7e-01
不是很干凈,但也許有幫助:
d<-data.frame(rep(c(3,NA,NA,NA,NA,4,NA,NA,NA,NA),7),seq(as.Date("1999-01-01",tz = "GMT","%Y-%m-%d"),as.Date("2000-05-01",tz = "GMT","%Y-%m-%d"), by="1 week"))
colnames(d)<-c("data","Date")
time<-d$Date
a<-aggregate(d,by=list(substr(d$Date,1,7)),FUN=function(x) max(x,na.rm=TRUE))
colnames(a)<-c("Date","Data","xyz")
d$Date<-substr(d$Date,1,7)
t<-merge(a[-3],d[-1],by = "Date")
t$Date<-time
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.