簡體   English   中英

如何在R中將每月時間序列與每周時間序列對齊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM