Почему у моего объекта xts есть X в поле индекса? - PullRequest
0 голосов
/ 16 апреля 2019

Скажем, у меня есть базовый xts объект.

a <- xts(order.by = Sys.Date()-1:5,(6:10))
a
           [,1]
2019-04-10   10
2019-04-11    9
2019-04-12    8
2019-04-13    7
2019-04-14    6

Однако иногда я получаю это:

       [,1]
X2019-04-10   10
X2019-04-11    9
X2019-04-12    8
X2019-04-13    7
X2019-04-14    6

Похоже, что данные имеют "X" впереди.

Если я пытаюсь увидеть индекс, я получаю:

index(a)[1]
"2019-04-10"

, но если у меня есть "X", я получаю:

index(a)[1]
"2019-04-10 UTC"

Я использую источник Rданные, созданные кем-то еще.Насколько я могу судить, он всегда имеет один и тот же формат, но когда у меня есть «X», xts не работает должным образом, особенно при слиянии или rbind, особенно с обычными данными.

Обновление:

Вот заголовок dput(Xdata) согласно запросу.

dput(head(temp))
structure(c(116.625, 116.34375, 116.460938, 116.296875, 116.265625, 
116.4375), class = c("xts", "zoo"), .indexCLASS = c("POSIXlt", 
"POSIXt"), .indexTZ = "UTC", tclass = c("POSIXlt", "POSIXt"), tzone = "UTC", index = structure(c(1511913600, 
1.512e+09, 1512086400, 1512345600, 1512432000, 1512518400), tzone = "UTC", tclass = c("POSIXlt", 
"POSIXt")), .Dim = c(6L, 1L), .Dimnames = list(NULL, "Close.Price"))
           Close.Price
2017-11-29     116.6250
2017-11-30     116.3438
2017-12-01     116.4609
2017-12-04     116.2969
2017-12-05     116.2656
2017-12-06     116.4375

Единственное, что мне кажется странным, это то, что одно из значений индекса1,512e + 09 вместо полного целого числа.Я понятия не имею, как это исправить.

Обновление 2: X появляется в Rstudio только при использовании команды View.

X2018.02.22     114.2188
X2018.02.23     114.3828
X2018.02.26     114.4375
X2018.02.27     114.1484
X2018.02.27.1   114.1484

Если я посмотрю на сам индекс, единственное отличие состоит в том, что в индексе X отображается UTC.

Я думаю, что дублирующая запись с 2018.02.27.1 отвечает заXI ожидал бы, что это будет просто дублированная дата.Если я уберу это второе свидание с head (), X исчезнет.Я использую R 3.5.3 и XTS 0.11-2.Я недавно обновил R и все пакеты.

Я думаю, что наконец-то получил его. После использования кода Cettt для очистки индекса я использовал: temp = temp[!duplicated(index(temp))] для удаления лишних дубликатов и, наконец, XушелЯ думаю, что исходные данные имеют некоторые искажения.И эти шаги очищают его.

Обновление 4: Я обнаружил большую проблему с X.Если я выведу фрейм данных с помощью fwrite, индекс будет напечатан с помощью X. Это отрицательно скажется на удобочитаемости и удобстве использования выходного файла.Удаление дубликатов не является хорошим решением, поскольку иногда необходимы дубликаты.Я делаю это регулярно и никогда раньше не сталкивался с этими проблемами.Мои пакеты, кажется, соответствуют другим без проблем.Я могу только предположить, что проблема заключается в моей версии Rstuio 1.2.1335.Кто-нибудь может придумать решение?

Обновление 5 Проблема также возникает с Rgui 3.5.3 с View () (чего я не знал), так что проблема не с Rstuio, но с самим R ???

Обновление 6 Я использовал чистую машину и пробовал разные версии R. R 3.4.4 с xts 0.11-2 и zoo 1.8-5 не сделалесть такая же проблема.3.4.4 не было встроенной функции View (), поэтому требовалась Rstudio.В R 3.5.x с теми же версиями пакета View () доступен в Rgui, и все они отображают и печатают X.

1 Ответ

1 голос
/ 16 апреля 2019

Я не знаю, откуда взялась буква «Х» (я не могу воспроизвести это поведение), но, возможно, вы можете избавиться от нее так:

index(df) <- as.Date(format(index(df), tz = ""))
...