阅读我的第一个 xts 时间序列并获取重复的行

Reading in my first xts time series and getting duplicated rows

我正在按照我在 previous answer 中阅读的内容创建我的第一个 xts 时间序列。我在输出中得到重复的行,但仅限于某些情况。 (数据以 5 分钟为增量,但存在不在常规 5 分钟时间表上的间隙。因此,我对这些不规则数据使用 xts,以便以后使用 acf)。这个前 10 行的示例有效:

> waterlevels
                 dates water.level.ft
1  2014-12-18 15:43:16             NA
2  2014-12-18 15:48:16          2.608
3  2014-12-18 15:53:16          2.610
4  2014-12-18 15:58:16          2.605
5  2014-12-18 16:03:16          2.600
6  2014-12-18 16:08:16          2.553
7  2014-12-18 16:13:16          2.565
8  2014-12-18 16:18:16          2.352
9  2014-12-18 16:23:16          2.350
10 2014-12-18 16:28:16          2.357

dtw2 <- data.frame(waterlevels$dates, waterlevels$Water.Level.ft)
colnames(dtw2) <- c("dates","waterlevels")
dtw2.ts <- xts(dtw2$waterlevels, order.by = dtw2$dates)

但是当我使用完整数据集(89246 行,所以我不确定如何 post 它)时,它会在输出中复制行(数据在 EST 中):

dtw <- data.frame(waterlevels.cw2$dates, waterlevels.cw2$Water.Level.ft)
colnames(dtw) <- c("dates","waterlevels")
dtw.ts <- xts(dtw$waterlevels, order.by=dtw$dates)

> head(dtw.ts)
                 [,1]
2014-12-18 15:43:16    NA  
2014-12-18 15:43:16    NA
2014-12-18 15:48:16 2.608
2014-12-18 15:48:16 2.608
2014-12-18 15:53:16 2.610
2014-12-18 15:53:16 2.610
Warning message:
timezone of object (EST) is different than current timezone (). 

为什么在生成的时间序列中每一行都会重复两次?

很简单,xts 对象有重复的行,因为您的 waterlevels.cw2 data.frame 有。前 21,666 行匹配后 21,666 行。

> wl <- waterlevels.cw2
> all.equal(wl[1:21666,], wl[21667:43332,], check.attributes=FALSE)
[1] TRUE

从您的 data.frame 中删除重复项,它们将不会出现在您的 xts 对象中:

> dtw <- data.frame(dates=waterlevels.cw2$dates,
+                   waterlevels=waterlevels.cw2$Water.Level.ft)
> head(dtw.ts <- with(dtw[-(1:21666),], xts(waterlevels, dates)))
                     [,1]
2014-12-18 15:43:16    NA
2014-12-18 15:48:16 2.608
2014-12-18 15:53:16 2.610
2014-12-18 15:58:16 2.605
2014-12-18 16:03:16 2.600
2014-12-18 16:08:16 2.553