我将时间序列与每日平均观察数据均匀地隔开.
如何计算季节性意味着最简单的方法?季节应遵循DJF(=冬季:12月,1月,2月),MAM,JJA和SON的气象命名.
这意味着12月的价值来自x-1年.
在计算季节性手段时可以遵循这个想法.然而,一些警告使它不是非常透明,一个人必须小心!
我还在前一个帖子中处理了这个问题的一小部分:如何在R中切换行?
现在是完整的故事:
0:制作随机时间序列
ts.pdsi <- data.frame(date = seq(
from=as.Date("1901-01-01"),
to=as.Date("2009-12-31"),
by="day"))
ts.pdsi$scPDSI <- rnorm(dim(ts.foo)[1], mean=1, sd=1) # add some data
Run Code Online (Sandbox Code Playgroud)
1st:使用海洋包装并为您的时间序列添加季节,必须将其格式化为data.frame.
library(seas)
# add moth/seasons
ts.pdsi$month <- mkseas(ts.pdsi,"mon") # add months
ts.pdsi$seas <- mkseas(ts.pdsi,"DJF") # add seasons
ts.pdsi$seasyear <- paste(format(ts.pdsi[,1],"%Y"),
ts.pdsi$seas ,sep="") # add seasyears, e.g. 1950DJF
Run Code Online (Sandbox Code Playgroud)
这给了
> head(ts.pdsi)
date scPDSI month seas seasyear
1 1901-01-01 -0.10881074 Jan DJF 1901DJF
2 1901-02-01 -0.22287750 Feb DJF 1901DJF
3 1901-03-01 …Run Code Online (Sandbox Code Playgroud)