По какой-то причине, когда я преобразую данные своего временного ряда из фрейма данных в объект xts, часовой пояс включается в индекс. Я подозреваю, что это проблема, когда я пытаюсь запустить моделирование временных рядов на объекте, потому что я продолжаю получать ошибки. Когда я go проверяю структуру объекта xts, данные внутри объекта xts каким-то образом преобразуются в chr. Они должны быть num, какими они были до преобразования. Вот некоторые данные:
full_timestamp PRICE
2015-01-02 10:02:27.389055 85.4
2015-01-02 10:03:30.926059 85.3
2015-01-02 10:04:52.231750 85.4
2015-01-02 10:05:37.139763 85.5
2015-01-02 10:06:54.926069 85.5
2015-01-02 10:07:57.253187 85.3
Вот структура фрейма данных:
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 89026 obs. of 2 variables:
$ full_timestamp: POSIXct, format: "2015-01-02 10:02:27.389055" "2015-01-02 10:03:30.926059" "2015-01-02 10:04:52.231750" ...
$ PRICE : num 85.4 85.3 85.4 85.5 85.5 ...
Код, который я использовал для преобразования метки времени из символьного вектора в метку времени POSIXct:
testing_eq_4xts$full_timestamp <- as.POSIXct(strptime(testing_eq_4xts$full_timestamp,
format = "%Y-%m-%d:%H:%M:%OS",
tz = ""))
Я пытался включить tz = ""
, вообще не включать часть tz
и даже Sys.unsetenv("TZ")
, чтобы остановить преобразование, выбирающее часовой пояс. Я также должен подчеркнуть, что мне нужна гранулярность в метке времени для того, что я моделирую. Вот код, который я использую для преобразования в xts:
testing_eq_xts <- as.xts(testing_eq_4xts[, names(testing_eq_4xts) != "full_timestamp"],
order.by = testing_eq_4xts$full_timestamp, unique = F)
, и вот как выглядит структура:
An ‘xts’ object on 2015-01-02 10:02:27.389055/2015-12-31 14:37:07.969814 containing:
Data: num [1:89026, 1] 85.4 85.3 85.4 85.5 85.5 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr "PRICE"
Indexed by objects of class: [POSIXct,POSIXt] TZ:
xts Attributes:
NULL
также индекс xts:
[1] "2015-01-02 10:02:27.389055 AEDT" "2015-01-02 10:03:30.926059 AEDT"
[3] "2015-01-02 10:04:52.231750 AEDT" "2015-01-02 10:05:37.139763 AEDT"
Оставить отметку времени в виде символьного вектора и попытаться преобразовать ее в POSIXct при преобразовании в xts также не работает, используя:
testing_eq_xts2 = xts(testing_eq_4xts[, 2], as.POSIXct(testing_eq_4xts[, 1]))
дает эту ошибку:
Error in as.POSIXct.default(testing_eq_4xts[, 1]) :
do not know how to convert 'testing_eq_4xts[, 1]' to class “POSIXct”
Нахожусь ли я на правильном пути, почему PRICE
было преобразовано в chr
в объекте xts, и если да, то как мне это исправить? Если я ошибаюсь в своих предположениях, то что мне нужно сделать, чтобы это исправить? Спасибо.