[R] how apply.monthly() in package xts works
Waichler, Scott R
Scott.Waichler at pnnl.gov
Thu Mar 9 22:31:11 CET 2017
Hi,
I found that apply.monthly() in xts does not work as I expected in the case of a sparse timeseries:
my.dates <- as.Date(c("1992-06-01", "1992-06-24", "1992-06-30", "1993-06-22", "1994-06-07", "1995-06-08"))
my.xts <- xts(1:6, my.dates)
start(my.xts) # "1992-06-24"
end(my.xts) # "1995-06-08"
apply.monthly(my.xts, mean)
# [,1]
# 1995-06-08 3.5
The endpoints it chooses are based on looking at the month (June) alone. I was able to get a value for each (month, year) in the timeseries with the following use of aggregate():
my.months <- months(my.dates)
my.years <- years(my.dates)
df1 <- data.frame(x = coredata(my.xts), dates = my.dates, months = my.months, years = my.years)
df2 <- aggregate(df1[-c(3,4)], df1[c("months", "years")], mean)
xts(df2$x, df2$dates)
# [,1]
# 1992-06-18 2
# 1993-06-22 4
# 1994-06-07 5
# 1995-06-08 6
Two questions:
1) Is there a more elegant way to do this?
2) Shouldn't the xts documentation discuss the problem of sparse data?
Regards,
Scott Waichler
Pacific Northwest National Laboratory
Richland, WA USA
More information about the R-help
mailing list