У меня есть объект xts с именем data
, который содержит 5 минут возврата за период с 2015-01-01 17:00:00 до 2015-12-31 17:00:00. Каждый торговый день начинается в 17:00:00 и заканчивается на следующий день в то же время в общей сложности 288 ежедневных возвращений [(24 часа * 60 минут)/5 минут = 288 внутридневных возвратов]. Отдача обозначаются как Элементы sum xts в строке списка по строке
head(data, 5)
DPRICE
2015-01-01 17:00:00 0.000000e+00
2015-01-01 17:05:00 9.797714e-05
2015-01-01 17:10:00 2.027022e-04
2015-01-01 17:15:00 2.735798e-04
2015-01-01 17:20:00 7.768653e-05
tail(data, 5)
DPRICE
2015-12-31 16:40:00 0.00
2015-12-31 16:45:00 0.0001272704
2015-12-31 16:50:00 0.0010186764
2015-12-31 16:55:00 0.0006841370
2015-12-31 17:00:00 0.0002481227
Я пытаюсь стандартизировать данные по их среднему абсолютному значению для каждого 5-минутного внутридневного интервала по Макмиллан и Спейт Daily FX волатильности прогнозы (2012).
Мой * код
library(xts)
std_data = abs(data) #create absolute returns
D <- split(std_data, "days") #splits data to days
mts.days <- lapply(seq_along(D) - 1, function(i) {
if (i > 0) rbind(D[[i]]["T17:00:00/T23:55:00"], D[[i + 1]]["T00:00:00/T16:55:00"])
}) #creates a list with 365 elements each containing 288 unique returns
dummy = mapply(sum, mts.days) #add the first,second... observations from each element
С помощью этого кода я создаю список с 365 XTS элементов каждый из которых имеет размеры
> dim(mts.days[[2]])
[1] 288 1
Я хочу добавьте те же наблюдения от каждого элемента, чтобы создать знаменатель вышеприведенной функции.
Так что вы хотите верните вектор длиной 365 * 288? Если это так, я бы использовал манипуляции с агрегациями, используя либо dplyr, либо data.table –
Значение фиктивного объекта возвращает числовой массив [1: 365], в то время как я хочу добавить первые наблюдения каждого элемента в список 'mts.days' , например, возвращение 17:00:00 за каждый день, 17:05:00 за каждый день и так далее. Я думаю, что 'mapply' суммирует все наблюдения для каждого элемента отдельно, как' lapply'. Я хочу вернуть вектор из 288 строк по 1 столбцу (я думаю). Затем я хочу использовать std_data/dummy и стандартизировать возвращаемые данные. – Greconomist
@AllenWang Я не совсем уверен, как использовать dplyr или data.table, поскольку я новичок в R. Извините, что – Greconomist