为什么我的xts对象在索引字段中有一个X?

问题描述 投票:0回答:1

说我有一个基本的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的行为并不像预期的那样,特别是对于merge或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的重复条目是X的责任我希望它只是一个重复的日期。如果我用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 with 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.

r view time-series rstudio xts
1个回答
1
投票

我不知道“X”来自哪里(我不能重现这种行为),但也许你可以像这样摆脱它:

index(df) <- as.Date(format(index(df), tz = ""))
© www.soinside.com 2019 - 2024. All rights reserved.