R POSIXct 有时会以具有相似日期时间格式的 df 返回 NA

R POSIXct sometimes return NA in df with similar datetime formats

提问人:Jan. 提问时间:11/1/2023 最后编辑:ismirsehregalJan. 更新时间:11/1/2023 访问量:33

问:

我有一个长数据帧(大约 1e6 行),如下所示:

DF <- data.frame(
  stringsAsFactors = FALSE,
              date = c("2012-03-25 00:00:00",
                       "2012-03-25 01:00:00","2012-03-25 02:00:00",
                       "2012-03-25 03:00:00","2012-03-25 04:00:00","2012-03-25 05:00:00"),
                ID = c("KGM00167","KGM00167",
                       "KGM00167","KGM00167","KGM00167","KGM00167"),
             value = c(-6526.388611,-7.470833333,
                       -8280.555833,-8597.221389,-7419.444722,-0.0083)
)

as.POSIXct(DF$date[3], format = "%Y-%m-%d %H:%M:%S")

我正在尝试将此表读入 R 并将第一列转换为 POSXct 格式。 由于某种原因,某些日期被转换为 NA 值(例如,在此表中,第三行返回为 NA) 我不明白为什么会发生这种情况,因为格式似乎相似。

有人明白为什么会这样吗?

我使用的代码如下:

df <- read.table(csv, sep = ",", header = T, fill = T) %>% select(date, ID, value) %>% mutate(date = as.POSIXct(date, format = "%Y-%m-%d %H:%M:%S"))

r datetime posix na posixct

评论

1赞 Andrew Gustar 11/1/2023
鉴于日期,我怀疑这是由于夏令时开始,并且跳过了该小时。您可以通过显式指定时区来绕过它。
1赞 ismirsehregal 11/1/2023
我想这与这里讨论的问题相同。例如:不会导致 .as.POSIXct(DF$date[3], format = "%Y-%m-%d %H:%M:%S", tz = "UTC")NA
0赞 r2evans 11/1/2023
根据 timeanddate.com/time/dst/2012.html,许多国家/地区将 2012 年 3 月 25 日作为其年初的夏令时。
2赞 r2evans 11/1/2023
1 月,从我的“时间戳的乐趣”中吸取的教训:如果您知道数据来源的时区,请始终始终使用 .即使您立即将其更改为首选 TZ,至少您不会遇到这样的问题。有太多的细微差别和极端情况,使得代码中的任何假设都非常有趣,需要排除故障,这是其中之一。as.POSIXct
0赞 Jan. 11/2/2023
谢谢,这确实是由夏令时引起的,包括时区 (tz='UTC') 确实解决了问题。

答: 暂无答案