У меня есть данные о внутридневных ценах за 1 минуту, в которых отсутствуют точки данных. Таким образом, я хочу их заполнить.
Я прочитал предложения в следующем сообщении и попробовал аналогичную процедуру: R : Заполнение недостающих дат во временном ряду?
В моем случае отсутствующая точка данных - это первая сделка, т.е. в 09:31:00.
> head(s)
AMR.Open AMR.High AMR.Low AMR.Close AMR.Volume AMR.WAP AMR.hasGaps AMR.Count
2010-09-10 09:32:00 6.08 6.10 6.07 6.10 298 6.087 0 39
2010-09-10 09:33:00 6.10 6.14 6.10 6.14 274 6.122 0 70
2010-09-10 09:34:00 6.14 6.15 6.13 6.13 472 6.133 0 96
2010-09-10 09:35:00 6.13 6.14 6.13 6.13 291 6.133 0 68
2010-09-10 09:36:00 6.13 6.13 6.11 6.11 548 6.123 0 97
2010-09-10 09:37:00 6.11 6.11 6.11 6.11 67 6.110 0 26
> na.locf(s, xout=seq(as.POSIXct(head(index(s), 1) - 60), as.POSIXct(tail(index(s), 1)), by="1 min")) -> ss
> head(ss)
AMR.Open AMR.High AMR.Low AMR.Close AMR.Volume AMR.WAP AMR.hasGaps AMR.Count
2010-09-10 09:32:00 6.08 6.10 6.07 6.10 298 6.087 0 39
2010-09-10 09:33:00 6.10 6.14 6.10 6.14 274 6.122 0 70
2010-09-10 09:34:00 6.14 6.15 6.13 6.13 472 6.133 0 96
2010-09-10 09:35:00 6.13 6.14 6.13 6.13 291 6.133 0 68
2010-09-10 09:36:00 6.13 6.13 6.11 6.11 548 6.123 0 97
2010-09-10 09:37:00 6.11 6.11 6.11 6.11 67 6.110 0 26
Как вы можете видеть выше, возвращенный объект не заполнен должным образом.
Ниже вы можете видеть, что я правильно указал время начала и окончания.
> as.POSIXct(head(index(s), 1) - 60)
[1] "2010-09-10 09:31:00 EDT"
> as.POSIXct(tail(index(s), 1))
[1] "2010-09-10 16:00:00 EDT"
>
Может ли это быть из-за того, что в диапазоне дат указан часовой пояс, а в исходном индексе POSIX - нет? Я попытался удалить tz, указав tz = "", но это не помогло. При этом часовой пояс может быть отвлекающим маневром.
Я сохранил данные в формате rda (бинарный), если кому интересно тестирование:
http://www.speedyshare.com/files/28576853/test.rda
Цените помощь.
AMR
и 389 дляattr(,"index")
. Я не вижу недостающих точек данных. Теперь, когда отсутствует первая точка в 9:31, у вас есть данные для нее? Я имею в виду, что все, что вам нужно сделать, это сдвинуть индексы индекса и атрибутов на единицу и заполнить первый. Если это так, я могу помочь вам без проблем. В противном случае я действительно не понимаю, в чем ваша проблема .... - person msikd65   schedule 22.05.2011