Как сократить несколько временных рядов с разными датами? - PullRequest
2 голосов
/ 30 апреля 2019

Я использую данные временных рядов, которые были получены от разных поставщиков.Это приводит к тому, что длина векторов не совпадает.

Например:

nrow(xts_ret)       #2176
nrow(xts_trade)     #2177
nrow(xts_trans)     #2192
nrow(xts_vola_ret)  #2177

У меня есть один дополнительный временной ряд, который содержит только факторы:

> head(xts_sentiment)

           [,1]      
2019-04-29 "neutral" 
2019-04-29 "negative"
2019-04-29 "neutral" 
2019-04-29 "neutral" 
2019-04-29 "neutral" 
2019-04-29 "neutral" 

Примечание: все вышеперечисленные векторы отформатированы как объекты "xts".

Основная проблема этого параметра заключается в том, что даты xts_ret, xts_trade, xts_trans, xts_vola_ret и xts_sentiment различаются по переменной.

Я использую версию R 3.5.1 (2018-07-02).

Я нашел команду "merge" для xts, которая делает именно то, что я хочу

data_pool <- merge(xts_ret, xts_trade, xts_trans, xts_vola_ret)

Если одиндата (или значение) отсутствует, она заменяет свою запись в соответствующем векторе на «NA», но перечисляет эту запись в строке с соответствующей датой.

> head(data_pool)

               xts_ret xts_trade xts_trans xts_vola_ret
2013-04-28          NA        NA     40986           NA
2013-04-29  0.04805079         0     50009   0.00000000
2013-04-30 -0.04805079         0     48795  -0.04516775
2013-05-01 -0.14532060         0     50437  -0.13931143
2013-05-02 -0.12327888         0     57278  -0.12424083
2013-05-03 -0.12792566         0     55859  -0.12770457

Функция «complete.case» позволяетчтобы я исключил все строки, в которых есть запись "NA", чтобы все векторы имели одинаковую длину.

Проблема:

Если я добавлю вектор xts_sentiment в мою переменную пула, он содержиттолько значения «NA», а «complete.cases» удаляет eсама строка набора данных.

Если я взгляну на переменную xts_sentiment, то она сама (см. выше) содержит правильные значения.

Я также попытался установить "as.character (xts_sentiment)) "или" as.string (xts_sentiment) "в команде" слияние ", но это не помогло.

Кто-нибудь знает, как получить значения xts_sentiment в переменную" pool "?

Кстати: я также попробовал data.table, который отображает xts_sentiment со всем его значением, но у меня нет преимущества "уникальных" дат.

Большое спасибо за вашу помощь!

1 Ответ

0 голосов
/ 13 мая 2019

Решением моей проблемы было:

Переменная xts_sentiment состоит из символов.

Функции XTS работают как матрицы, что означает, что каждому вектору требуется одинаковое содержимое (например, все векторы содержат только символыили все векторы содержат только числа).

Таким образом, невозможно создать элемент xts из вектора символов и вектора с числами.

Мое решение состояло в том, чтобы декодировать уровни настроенияв числа и используйте команду «merge.xts».Это сработало.

...