我想在R中使用时间序列,但我被困在开始时,因为我有频率问题。我有30年的月度数据(开始日期= 1988年,结束日期= 2018年),但有时会有漏洞:我有几个月或几年没有数据。我宁愿不插入或调解,以填补漏洞,但只是省略空月/年使用na.省略。问题是,我将有一些年份有12个月,而另一些年份只有更少的月。我的问题是……我现在如何确定和使用我的频率?
这里有一个两年的例子:
YEAR MONTH Temp Salt
1988 1 NA NA
1988 2 NA NA
1988 3 NA NA
1988 4 NA NA
1988 5 NA NA
1988 6 NA NA
1988 7 16.45388889 37.4064537
1988 8 17.48898148 37.89002778
1988 9 NA NA
1988 10 NA NA
1988 11 15.8050463 38.08833333
1988 12 NA NA
1989 1 NA NA
1989 2 10.74912037 38.2787037
1989 3 NA NA
1989 4 NA NA
1989 5 NA NA
1989 6 14.52092593 37.71060185
1989 7 16.84342593 37.32300926
1989 8 17.97930556 37.82277778
1989 9 NA NA
1989 10 NA NA
1989 11 16.23837963 38.00009259
1989 12 13.6325463 37.97509259
任何建议都会很有用!
非常感谢!
zoo包中的zooreg类用于这种情况,即您有潜在的规律性,但可能没有某些值。
假设最后的Note中的输入将产生频率为12的zooreg系列。这是一个频率为12但没有所有值的时间序列。将text = Lines
替换为您的文件名,例如"myfile. date "从文件中读取。请注意,yearmon类将时间存储为1月的年加0,2月的1/12,3月的2/12,等等。
library(zoo)
to_ym <- function(y, m) as.yearmon(paste(y, m, sep = "-"))
z <- read.zoo(text = Lines, header = TRUE, index = 1:2, FUN = to_ym, regular = TRUE)
z <- na.omit(z)
frequency(z)
## [1] 12
问题不清楚你到底有什么(文件?)数据帧?),但如果你有一个数据帧DF读取它。
DF <- read.table(text = Lines, header = TRUE)
z <- read.zoo(DF, index = 1:2, FUN = to_ym, regular = TRUE)
z <- na.omit(z)
要恢复NA's,只需将其转换为ts级数:
z_na <- as.zooreg(as.ts(z))
另外,如果您决定填写na,那么有几个例程可用,包括na。花键,na。约,na。StructTS (Kalman filter)和na.locf.
我们现在可以像这样处理z:
as.integer(time(z)) # year
cycle(time(z)) # month (1 = Jan, 2 = Feb, ...)
start(z) # starting time of series
end(z) # ending time of series
plot(z)
plot(scale(z), screen = 1, col = 1:2)
legend("bottomleft", leg = names(z), col = 1:2, lty = 1)
library(ggplot2)
autoplot(z)
autoplot(z) + facet_free()
autoplot(z, facet = NULL)
autoplot(scale(z), facet = NULL)
注意
Lines <- "
YEAR MONTH Temp Salt
1988 1 NA NA
1988 2 NA NA
1988 3 NA NA
1988 4 NA NA
1988 5 NA NA
1988 6 NA NA
1988 7 16.45388889 37.4064537
1988 8 17.48898148 37.89002778
1988 9 NA NA
1988 10 NA NA
1988 11 15.8050463 38.08833333
1988 12 NA NA
1989 1 NA NA
1989 2 10.74912037 38.2787037
1989 3 NA NA
1989 4 NA NA
1989 5 NA NA
1989 6 14.52092593 37.71060185
1989 7 16.84342593 37.32300926
1989 8 17.97930556 37.82277778
1989 9 NA NA
1989 10 NA NA
1989 11 16.23837963 38.00009259
1989 12 13.6325463 37.97509259"