阅读我的第一个 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
我正在按照我在 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