从字符转换为 date/time returns NA

Conversion from character to date/time returns NA

我经常使用as.POSIXct将字符转换为POSIXct,但我有时会得到NA,我不知道为什么。例如:

DATE <- "Fri Apr 10 11:57:47 2015"
DATE_in_posix <- as.POSIXct(DATE, format="%a %b %d %H:%M:%S %Y")

我也试过这个:

DATE_in_posix <- as.POSIXct(DATE, format="%a %h %d %H:%M:%S %Y")

但两者的结果总是:

> DATE_in_posix
[1] NA

也许 as.POSIXct 的输入太长了?如果时间太长,解决方案是什么?

可能是因为 "Fri" 和 "Apr" 在您的语言环境中不是正确的缩写。

使用 Sys.setlocale("LC_TIME", locale) 将 R 会话的语言环境设置为可以正确解释英文缩写的语言环境。有关如何在上述函数调用中指定 locale,请参阅 ?Sys.setlocaleExamples 部分。

例如,在我的 Ubuntu 机器上它将是:

> Sys.setlocale("LC_TIME", "en_US.UTF-8")
> as.POSIXct("Fri Apr 10 11:57:47 2015", format="%a %b %d %H:%M:%S %Y")
[1] "2015-04-10 11:57:47 CDT"

非常感谢亨里克!!!

我像这样更改了 LC_TIME 类别,现在可以使用了

Sys.getlocale(category = "LC_TIME")
[1] "German_Germany.1252"

Sys.setlocale("LC_TIME", "English")
[1] "English_United States.1252"

DATE_in_posix<-as.POSIXct(DATE,format="%a %b %d %H:%M:%S %Y")
> DATE_in_posix
[1] "2015-04-10 11:57:47 CEST"

当然现在 strptime 也可以了

DATE_in_posix<-strptime(DATE,format="%a %b %d %H:%M:%S %Y")
> DATE_in_posix
[1] "2015-04-10 11:57:47 CEST"

非常感谢你们,周末愉快!