我有数据:
dput(head(data))
> dput(head(data))
structure(list(Gmt.time = c("01.06.2015 00:00", "01.06.2015 00:01",
"01.06.2015 00:02", "01.06.2015 00:03", "01.06.2015 00:04", "01.06.2015 00:05"
), Open = c(0.88312, 0.88337, 0.88377, 0.88412, 0.88393, 0.8838
), High = c(0.88337, 0.88378, 0.88418, 0.88418, 0.88393, 0.88393
), Low = c(0.883, 0.88337, 0.88374, 0.88394, 0.88368, 0.88362
), Close = c(0.88337, 0.88375, 0.88412, 0.88394, 0.8838, 0.88393
), Volume = c(83.27, 100.14, 117.18, 52.53, 77.69, 91.63)), .Names = c("Gmt.time",
"Open", "High", "Low", "Close", "Volume"), row.names = c(NA,
6L), class = "data.frame")
>
并且没有NA值
any(is.na(head(data)))
[1] FALSE
如果我在前几个元素上运行它,就像在提供的数据中那样:
data_xts <- xts(head(data[,2:6]), as.POSIXct(head(data[,1]), format='%d.%m.%Y %H:%M'))
一切正常
但如果我在完整数据集上运行
> nrow(data)
[1] 1581120
我得到:
> data_xts <- xts(data[,2:6], as.POSIXct(data[,1], format='%d.%m.%Y %H:%M'))
Error in xts(data[, 2:6], as.POSIXct(data[, 1], format = "%d.%m.%Y %H:%M")) :
'order.by' cannot contain 'NA', 'NaN', or 'Inf'
答案 0 :(得分:0)
如果您的时间戳以列名称暗示的GMT格式,那么as.POSIXct(data[,1], format='%d.%m.%Y %H:%M')
可能会返回NA
,因为时区尚未设置为UTC,默认情况下假定为本地时区。您可能在本地时区中存在时间戳,该时间戳将返回NA。即,尝试as.POSIXct(data[,1], format='%d.%m.%Y %H:%M', tz = "GMT")
。
我猜测返回NA的第一个记录包含一个小时内的时间戳,该时间戳由于当地时区的夏令时变化(即不存在)而被跳过;正如here所述。