簡體   English   中英

為什么我的 xts 對象在索引字段中有一個 X?

[英]Why does my xts object have an X in the index field?

假設我有一個基本的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:如果使用 View 命令,X 只會出現在 Rstudio 中。

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 和動物園 1.8-5 沒有相同的問題。 3.4.4 沒有原生的 View() 函數,所以它需要 Rstudio。 在具有相同包版本的 R 3.5.x 中,Rgui 中提供了 View(),它們都顯示和打印 X。

我不知道“X”從何而來(我無法重現這種行為),但也許您可以像這樣擺脫它:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM