我正在尝试使用“动物园”库在 R 中加载时间序列。
我的观察结果有不同的精度。有些有日/月/年,有的只有月和年,还有的有年份:
02/10/1915
1917
07/1917
07/1918
30/08/2018
随后,我需要按年、年和月聚合行。基本的 R as.Date 函数不处理这个问题。如何使用动物园对这些数据进行建模?
谢谢,穆龙
我们使用由问题中的索引数据形成的测试数据,后跟一个数字:
# test data
Lines <- "02/10/1915 1
1917 2
07/1917 3
07/1918 4
30/08/2018 5"
年度汇总
library(zoo)
to.year <- function(x) as.numeric(sub(".*/", "", as.character(x)))
read.zoo(text = Lines, FUN = to.year, aggregate = mean)
最后一行返回:
1915 1917 1918 2018
1.0 2.5 4.0 5.0
年/月聚合
由于没有月份的年/月数据聚合没有意义,我们首先删除仅年份数据并聚合其余数据:
DF <- read.table(text = Lines, as.is = TRUE)
# remove year-only records. DF.ym has at least year and month.
yr <- suppressWarnings(as.numeric(DF[[1]]))
DF.ym <- DF[is.na(yr), ]
# remove day, if present, and convert to yearmon.
to.yearmon <- function(x) as.yearmon( sub("\\d{1,2}/(\\d{1,2}/)", "\\1", x), "%m/%Y" )
read.zoo(DF.ym, FUN = to.yearmon, aggregate = mean)
最后一行给出:
Oct 1915 Jul 1917 Jul 1918 Aug 2018
1 3 4 5
更新:简化