2012-04-03 9 views
2

У меня есть нерегулярный временной ряд, содержащийся в xts и отдельный вектор индекса времени (конечные точки). Я хочу рассчитать статистику для каждой точки индекса на основе предыдущих 5 секунд для каждой конечной точки. Таким образом, начальная точка должна составлять 5 секунд перед каждой конечной точкой. Эти периоды могут перекрываться.Постоянный размер period.apply с нерегулярно разнесенными оконечными точками в R

Я не могу найти какую-либо функцию от * apply family, выполняющего эту работу. Как я могу это сделать? Должен ли я вручную писать цикл для него?

Вот моя скромная иллюстрация, где черные - данные xts, а красные - конечные точки. Я хочу получить результат функции для каждой красной точки, рассчитанной на всех черных точках за 5 секунд.

overlapping intervals

ответ

1

Существует не готовые функции, чтобы сделать это, но это довольно легко написать свой собственный.

# Example data 
library(xts) 
data(sample_matrix) 
x <- as.xts(sample_matrix) 
# Example function 
# Calculate the mean of the last 5 days of each month, returning 
# an xts object indexed at the endpoint 
myFunction <- function(i, y) xts(t(colMeans(y[(i-4):i,])), index(y)[i]) 
# Use lapply to call your function at each endpoint 
# (removing first endpoint, since it equals zero) 
do.call(rbind, lapply(endpoints(x, 'months')[-1], FUN=myFunction, y=x)) 
+0

Спасибо! Потребовалось время, чтобы сделать мой разум многомерным. Я не мог понять решение без этого :) – gadubishe