说我有一个基本的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中显示。
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。
我认为带有X.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带有View()时也会发生此问题(我不知道它有),因此问题不在于Rstuio,而在于R本身?
更新6 我使用了一台干净的机器,并尝试使用xts 0.11-2和zoo 1.8-5的R 3.4.4的不同版本没有相同的问题。 3.4.4没有本地的View()函数,因此需要Rstudio。在具有相同程序包版本的R 3.5.x中,Rgui中提供了View(),它们都显示并打印X。
答案 0 :(得分:1)
我不知道“ X”的来源(我无法重现此行为),但是也许您可以像这样摆脱它:
index(df) <- as.Date(format(index(df), tz = ""))