R对于POSIXct数据类型是否迷信

时间:2017-03-10 14:51:04

标签: r strptime

对于项目,我使用POSIXct函数将字符串转换为strptime格式。

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"

如果我将年份更改为20152017,或将日期从13更改为其他内容,则可以。 2016年3月13日似乎有些事情发生了。我错过了什么或者这是R内的缺陷吗?

我正在使用R version 3.3.2 (2016-10-31)

1 个答案:

答案 0 :(得分:4)

问题在于 &#34; 2016-03-13 02:56:16&#34;。 2016年3月13日是夏令时开始的时候。凌晨2点,时钟立即跳到凌晨3点。