频率的时间序列与NA (R软件)



我想在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"

最新更新