首页 > 解决方案 > Nas 介绍了 R 中基于 POSIXct 对象的创建和 xts 对象

问题描述

我正在尝试根据 5 分钟垃圾邮件的盘中数据生成一个 xts 对象。将日期时间转换为 POSIXct 对象时出现问题。通过这样做,它会激活夏令时,并且我的格式会发生变化。创建对象时,格式的差异会创建 NA,并且不会生成我的 cts 对象。

我从我的 csv 文件中读取数据

数据 = fread("….csv", header = T, sep = ",")

获取日期时间并将其存储在一个变量中

时间 <- 数据[,1]

这就是我的约会的样子

数据[,1]

[844] “03.01.2019 22:15:00.000 GMT+0100” “03.01.2019 22:20:00.000 GMT+0100” “03.01.2019 22:25:00.000 GMT+0100” [847] “03.01.2019 22 :30:00.000 GMT+0100" "03.01.2019 22:35:00.000 GMT+0100" "03.01.2019 22:40:00.000 GMT+0100" [850] "03.01.2019 22:45:00.000 GMT+0100" "03.01.2019 22:50:00.000 GMT+0100" "03.01.2019 22:55:00.000 GMT+0100" [853] "03.01.2019 23:00:00.000 GMT+0100" "03.01.2019 23:05: 00.000 GMT+0100" "03.01.2019 23:10:00.000 GMT+0100" [856] "03.01.2019 23:15:00.000 GMT+0100" "03.01.2019 23:20:00.000 GMT+0100" "03.01. 2019 23:25:00.000 GMT+0100" [859] "03.01.2019 23:30:00.000 GMT+0100" "03.01.2019 23:35:00.000 GMT+0100" "03.01.2019 23:40:00.000 GMT+ 0100"[862]"03.01.2019 23:45:00.000 GMT+0100" "03.01.2019 23:50:00.000 GMT+0100" "03.01.2019 23:55:00.000 GMT+0100" [865] "04.01.2019 00:00:00.000 GMT+0100" "04.01.2019 00:05:00.000 GMT+0100" "04.01.2019 00:10:00.000 GMT+0100" [868] "04.01.2019 00:15:00.000 GMT+0100" "04.01.2019 00:20:00.000 GMT+0100" "04.01.2019 00:25:00.000 GMT+0100" [871] "04.01.2019 00:30:00.000 GMT+0100" "04.01.2019 00:35:00.000 GMT+0100" " "04.01.2019 00:40:00.000 GMT+0100" [874] "04.01.2019 00:45:00.000 GMT+0100" "04.01.2019 00:50:00.000 GMT+0100" "04.01.2019 00:55 :00.000 GMT+0100" [877] "04.01.2019 01:00:00.000 GMT+0100" "04.01.2019 01:05:00.000 GMT+0100" "04.01.2019 01:10:00.000 GMT+0100" [880 ] "04.01.2019 01:15:00.000 GMT+0100" "04.01.2019 01:20:00.000 GMT+0100" "04.01.2019 01:25:00.000 GMT+0100"

我创建了新的 POSIX 变量

x2 <- as.POSIXct(时间, 格式='%m.%d.%Y %H:%M:%S')

我的新变量如下所示(您可以看到时区从 4 月开始发生了变化)

x2

[845]“2019-03-01 22:20:00 CET”“2019-03-01 22:25:00 CET”“2019-03-01 22:30:00 CET”“2019-03-01 22: 35:00 CET" [849] "2019-03-01 22:40:00 CET" "2019-03-01 22:45:00 CET" "2019-03-01 22:50:00 CET" "2019- 03-01 22:55:00 CET" [853] "2019-03-01 23:00:00 CET" "2019-03-01 23:05:00 CET" "2019-03-01 23:10:00 CET""2019-03-01 23:15:00 CET"[857]"2019-03-01 23:20:00 CET""2019-03-01 23:25:00 CET""2019-03-01 23:30:00 CET" "2019-03-01 23:35:00 CET" [861] "2019-03-01 23:40:00 CET" "2019-03-01 23:45:00 CET" " 2019-03-01 23:50:00 CET" "2019-03-01 23:55:00 CET" [865] "2019-04-01 00:00:00 CEST" "2019-04-01 00:05 :00 CEST" "2019-04-01 00:10:00 CEST" "2019-04-01 00:15:00 CEST" [869] "2019-04-01 00:20:00 CEST" "2019-04-01 00:25 :00 CEST" "2019-04-01 00:30:00 CEST" "2019-04-01 00:35:00 CEST" [873] "2019-04-01 00:40:00 CEST" "2019-04 -01 00:45:00 CEST" "2019-04-01 00:50:00 CEST" "2019-04-01 00:55:00 CEST" [877] "2019-04-01 01:00:00 CEST" “”“2019-04-01 01:05:00 CEST”“2019-04-01 01:10:00 CEST”“2019-04-01 01:15:00 CEST”[881]“2019-04-01 01 :20:00 CEST"00 CEST" "2019-04-01 00:50:00 CEST" "2019-04-01 00:55:00 CEST" [877] "2019-04-01 01:00:00 CEST" "2019-04- 01 01:05:00 CEST" "2019-04-01 01:10:00 CEST" "2019-04-01 01:15:00 CEST" [881] "2019-04-01 01:20:00 CEST"00 CEST" "2019-04-01 00:50:00 CEST" "2019-04-01 00:55:00 CEST" [877] "2019-04-01 01:00:00 CEST" "2019-04- 01 01:05:00 CEST" "2019-04-01 01:10:00 CEST" "2019-04-01 01:15:00 CEST" [881] "2019-04-01 01:20:00 CEST"

然后我创建了 xts 但出现了说生成了 NA 的错误

data.xts <- xts(data[,2], order.by = x2)

xts(data[, 2], order.by = x2) 中的错误:“order.by”不能包含“NA”、“NaN”或“Inf”

标签: rdatedatetimextsposixct

解决方案


对不起,6小时后我意识到我的错误。在这一步中,这是正确的:

x2 <- as.POSIXct(时间,格式='%d.%m.%Y %H:%M:%S')

不是

x2 <- as.POSIXct(时间, 格式='%m.%d.%Y %H:%M:%S')


推荐阅读