R';s as.POSIXct函数给出NA,30+;测试格式,时间包括上午/下午

R';s as.POSIXct函数给出NA,30+;测试格式,时间包括上午/下午,r,datetime,statistics,R,Datetime,Statistics,我正在尝试将以下日期/时间字符串转换为POSIXct对象: 19 Aug 2015 11:34 am 我尝试了30多种方法。仍在使用NAs 以下是不起作用的脚本列表(仅4个示例): 等等。错误在哪里?如果你是英语的,请尝试: as.POSIXct("19 Aug 2015 11:34 am", format = "%d %b %Y %I:%M %p") 如果没有,请尝试: Sys.setlocale("LC_ALL","English") as.POSIXct("19 Aug 2015 11

我正在尝试将以下日期/时间字符串转换为POSIXct对象:

19 Aug 2015 11:34 am
我尝试了30多种方法。仍在使用NAs

以下是不起作用的脚本列表(仅4个示例):


等等。错误在哪里?

如果你是英语的,请尝试:

as.POSIXct("19 Aug 2015 11:34 am", format = "%d %b %Y %I:%M %p")
如果没有,请尝试:

Sys.setlocale("LC_ALL","English")
as.POSIXct("19 Aug 2015 11:34 am", format = "%d %b %Y %I:%M %p")

说明:
strtime
是用于转换为POSIXct的格式化函数,它使用您所在地区的月份名称,如
Sys.getlocale(category=“LC_TIME”)
中所示。如果你给月份起英文名字,如果你的语言环境不是英语,你就得不到匹配的名字。

使用
toupper
的问题是它也大写你的月份,这不符合标准。但您可以使用正则表达式更精确地定位am/pm:

yourtime <- c("19 Aug 2015 11:34 am", "19 Aug 2015 11:34 pm")

# Regular expressions to the rescue!
y <- sub(pattern = "(am|pm)", replacement = "\\U\\1", x = yourtime, perl = TRUE)

# Just AM and PM have been capitalized
y

# No problems, now
as.POSIXct(y, format = "%d %b %Y %I:%M %p")

yourtime首先设置区域设置,然后尝试转换:

Sys.setlocale("LC_TIME", "C")
as.POSIXct("19 Aug 2015 11:34 am", format = "%d %b %Y %I:%M %p")

为我工作!
Sys.getlocale(category=“LC\u TIME”)
的输出是什么?如果您不知道,month变量在本地语言中起作用;I don’那可能是你的问题
Sys.setlocale("LC_TIME", "C")
as.POSIXct("19 Aug 2015 11:34 am", format = "%d %b %Y %I:%M %p")