R是否迷信POSIXct数据类型
Is R superstitious regarding POSIXct data type
对于一个项目,我使用 strptime
函数将字符串转换为 POSIXct
格式。
x <- strptime("2016-03-13 02:56:16", "%Y-%m-%d %H:%M:%S")
class(x)
[1] "POSIXlt" "POSIXt"
x + 3600
[1] NA
虽然 class(x)
结果是 "POSIXlt" "POSIXt"
,但做 x + 3600
,我得到 NA
如果我对 2017 年的同一月、日、时、分、秒执行类似的程序,它就成功了!
x <- strptime("2017-03-13 02:56:16", "%Y-%m-%d %H:%M:%S")
class(x)
[1] "POSIXlt" "POSIXt"
x + 3600
[1] "2017-03-13 03:56:16 EDT"
回顾我的数据,我看到一个日期列表,其中日期转换会出现问题!
[1] "2016-03-13 02:51:02" "2016-03-13 02:49:46" "2016-03-13 02:24:15" "2016-03-13 02:37:52" "2016-03-13 02:56:16"
[6] "2016-03-13 02:59:32" "2016-03-13 02:49:29" "2016-03-13 02:27:20" "2016-03-13 02:22:20" "2016-03-13 02:44:11"
[11] "2016-03-13 02:43:31" "2016-03-13 02:44:46" "2016-03-13 02:07:48" "2016-03-13 02:36:36" "2016-03-13 02:51:39"
[16] "2016-03-13 02:00:13" "2016-03-13 02:42:37" "2016-03-13 02:48:53" "2016-03-13 02:53:05" "2016-03-13 02:01:41"
[21] "2016-03-13 02:57:36" "2016-03-13 02:40:09" "2016-03-13 02:27:19" "2016-03-13 02:33:08" "2016-03-13 02:18:51"
[26] "2016-03-13 02:05:45" "2016-03-13 02:06:09" "2016-03-13 02:06:09" "2016-03-13 02:03:25" "2016-03-13 02:32:14"
[31] "2016-03-13 02:59:34" "2016-03-13 02:35:39" "2016-03-13 02:51:10" "2016-03-13 02:50:56" "2016-03-13 02:38:56"
[36] "2016-03-13 02:25:35" "2016-03-13 02:20:09" "2016-03-13 02:30:43" "2016-03-13 02:00:04" "2016-03-13 02:51:55"
[41] "2016-03-13 02:26:25" "2016-03-13 02:37:20" "2016-03-13 02:49:29" "2016-03-13 02:35:50" "2016-03-13 02:05:38"
[46] "2016-03-13 02:15:10" "2016-03-13 02:54:23"
如果我将年份更改为 2015
或 2017
,或者将日期从 13
更改为其他日期,它会起作用。似乎 2016 年 3 月 13 日发生了一些事情。我是否遗漏了什么或者这是 R 中的缺陷?
我正在使用R version 3.3.2 (2016-10-31)
问题是 没有“2016-03-13 02:56:16”这样的时间。 2016 年 3 月 13 日是夏令时开始的时间。那天凌晨 2 点,时钟立即跳到凌晨 3 点。
对于一个项目,我使用 strptime
函数将字符串转换为 POSIXct
格式。
x <- strptime("2016-03-13 02:56:16", "%Y-%m-%d %H:%M:%S")
class(x)
[1] "POSIXlt" "POSIXt"
x + 3600
[1] NA
虽然 class(x)
结果是 "POSIXlt" "POSIXt"
,但做 x + 3600
,我得到 NA
如果我对 2017 年的同一月、日、时、分、秒执行类似的程序,它就成功了!
x <- strptime("2017-03-13 02:56:16", "%Y-%m-%d %H:%M:%S")
class(x)
[1] "POSIXlt" "POSIXt"
x + 3600
[1] "2017-03-13 03:56:16 EDT"
回顾我的数据,我看到一个日期列表,其中日期转换会出现问题!
[1] "2016-03-13 02:51:02" "2016-03-13 02:49:46" "2016-03-13 02:24:15" "2016-03-13 02:37:52" "2016-03-13 02:56:16"
[6] "2016-03-13 02:59:32" "2016-03-13 02:49:29" "2016-03-13 02:27:20" "2016-03-13 02:22:20" "2016-03-13 02:44:11"
[11] "2016-03-13 02:43:31" "2016-03-13 02:44:46" "2016-03-13 02:07:48" "2016-03-13 02:36:36" "2016-03-13 02:51:39"
[16] "2016-03-13 02:00:13" "2016-03-13 02:42:37" "2016-03-13 02:48:53" "2016-03-13 02:53:05" "2016-03-13 02:01:41"
[21] "2016-03-13 02:57:36" "2016-03-13 02:40:09" "2016-03-13 02:27:19" "2016-03-13 02:33:08" "2016-03-13 02:18:51"
[26] "2016-03-13 02:05:45" "2016-03-13 02:06:09" "2016-03-13 02:06:09" "2016-03-13 02:03:25" "2016-03-13 02:32:14"
[31] "2016-03-13 02:59:34" "2016-03-13 02:35:39" "2016-03-13 02:51:10" "2016-03-13 02:50:56" "2016-03-13 02:38:56"
[36] "2016-03-13 02:25:35" "2016-03-13 02:20:09" "2016-03-13 02:30:43" "2016-03-13 02:00:04" "2016-03-13 02:51:55"
[41] "2016-03-13 02:26:25" "2016-03-13 02:37:20" "2016-03-13 02:49:29" "2016-03-13 02:35:50" "2016-03-13 02:05:38"
[46] "2016-03-13 02:15:10" "2016-03-13 02:54:23"
如果我将年份更改为 2015
或 2017
,或者将日期从 13
更改为其他日期,它会起作用。似乎 2016 年 3 月 13 日发生了一些事情。我是否遗漏了什么或者这是 R 中的缺陷?
我正在使用R version 3.3.2 (2016-10-31)
问题是 没有“2016-03-13 02:56:16”这样的时间。 2016 年 3 月 13 日是夏令时开始的时间。那天凌晨 2 点,时钟立即跳到凌晨 3 点。