выравнивание timeSeries не заканчивает свою работу

Я использую пакет timeSeries и особенно функцию align. Мои данные ложные, и я хочу заполнить NA, распространив последнее доступное значение. Но кажется, что align() не доходит до конца выборки, если она заканчивается NA.

Пример: у меня есть невыровненный временной ряд

> notAligned
GMT
           TS.1 TS.2 TS.3 TS.4
2011-02-03   NA    1    4    8
2011-02-04    1   NA    2   NA
2011-02-07    5    6   NA   NA
2011-02-08   NA    2   NA    9

Если я использую функцию выравнивания, она возвращает это

> align(notAligned)
GMT
           TS.1 TS.2 TS.3 TS.4
2011-02-03   NA    1    4    8
2011-02-04    1    1    2    8
2011-02-07    5    6   NA    8
2011-02-08   NA    2   NA    9

Он правильно заполняет TS.2 на 4-м и TS.4 на 4-м и 7-м, но не заполняет TS.1 на 8-м с 5 или TS.3 на 7-м и 8-м с 2. Я ожидаю, что align будет заполнить их...

Я неправильно понял функцию? Есть ли способ обойти это? Спасибо за вашу помощь


person Jean-Robert    schedule 08.02.2011    source источник


Ответы (1)


Я понятия не имею, почему timeSeries::align не работает, но я бы просто использовал zoo::na.locf:

na.locf(notAligned, na.rm=FALSE)
# GMT
#            TS.1 TS.2 TS.3 TS.4
# 2011-02-03   NA    1    4    8
# 2011-02-04    1    1    2    8
# 2011-02-07    5    6    2    8
# 2011-02-08    5    2    2    9
person Joshua Ulrich    schedule 08.02.2011
comment
Спасибо, Джошуа, все работает отлично. На самом деле я объединил его с align, так как align также делает временные ряды регулярными, чего нельзя сказать о na.locf... - person Jean-Robert; 09.02.2011