Разделение каждой строки объекта временного ряда xts или zoo на фиксированную строку - PullRequest
3 голосов
/ 21 декабря 2011

Я пытаюсь разделить объект xts, который содержит ряд временных рядов (столбцов; с общим столбцом даты (индексом). Я хочу разделить каждый столбец по его значению на указанную дату (скажем, '2010-09-30 '). Это делается для того, чтобы заново масштабировать весь объект со значениями 1 в каждом столбце на эту дату (обычная задача повторного базирования). Если бы это была обычная матрица, A, и нужная мне строкачтобы перебазировать, скажем, A[6,], я мог бы просто сделать

t(t(A)/A[6,])

, и это работает. Но попытка манипулировать объектом xts и его подмножеством строк xts['2010-09-30'] не работает так легко. Может кто-топожалуйста, укажите мне правильное направление. Я понимаю, что это очень просто, и я должен был найти ответ самостоятельно. На самом деле, если есть вообще лучший способ для перебазирования временных рядов таким образом с использованием пакета, я радпринять этот подход.

1 Ответ

3 голосов
/ 21 декабря 2011

xts и объекты зоопарка выровнены по индексу перед операциями. Если вы хотите разделить весь объект на значение в одной строке, вы должны использовать coredata (и, возможно, drop), чтобы получить значение для атомарного вектора (только с одним элементом).

Например:

library(xts)
x <- xts(1:10,as.Date("2011-12-21")+1:10)
x / drop(coredata(x['2011-12-26']))
...