R: изменить матрицу xts для каждого дневного ряда

У меня есть числовая матрица xts, которая включает в себя несколько дней серии минутных интервалов. Мне нужно рассчитать статистику за каждый день по минутным периодам, добавить новые столбцы, а затем собрать все дневные ряды вместе.

Я попробовал apply.daily(), который вызывает мою функцию статистики с матрицей xts для каждого дня, но я не могу понять, как вернуть измененный ряд дней обратно вызывающей функции и собрать полный набор измененных данных.

Одно из решений, которое может сработать, состоит в том, чтобы использовать endpoints(x, on = "day") в цикле, а затем вызывать rbind для повторной сборки обработанных дневных кадров. Есть ли лучшее решение?

process = function(myxts) {  
  day.indexes = endpoints(myxts, on="days")
  days = length(day.indexes) - 1

  l = list()
  list.index = 1

  for( i in 1:days ) {
    day.begin = day.indexes[i] + 1
    day.end = day.indexes[i+1]
    l[[list.index]] = ets.sym.process.daily(myxts[day.begin:day.end])
    list.index = list.index + 1
  }

  return(do.call("rbind", l))
}

person Robert Kubrick    schedule 28.02.2012    source источник
comment
Вопрос в том, что теперь у вас есть набор ежедневных данных, которые вы хотите объединить с вашими минутными данными (таким образом, чтобы все минутные бары на 28 февраля 2012 года получали значение за 28 февраля 2012 года из ваших ежедневных данных и т. д. )? Если это так, см. раздел stackoverflow.com/questions/8971797/ (в основном: merge, затем na.locf)   -  person Darren Cook    schedule 29.02.2012


Ответы (1)


Вы должны быть в состоянии использовать некоторую комбинацию do.call(rbind, lapply(split(myxts,"days"), myfun)). Трудно быть более конкретным без воспроизводимого примера.

person Joshua Ulrich    schedule 28.02.2012