当我尝试按以下格式解析时间戳时:"Thu Nov 8 15:41:45 2012",仅返回 NA
.
我使用的是Mac OS X,R 2.15.2和Rstudio 0.97.237 . 我操作系统的语言是荷兰语:我认为这与它有关 .
当我尝试 strptime
时,返回 NA
:
var <- "Thu Nov 8 15:41:45 2012"
strptime(var, "%a %b %d %H:%M:%S %Y")
# [1] NA
as.POSIXct
也没有工作:
as.POSIXct(var, "%a %b %d %H:%M:%S %Y")
# [1] NA
我也在上面的字符串上尝试了 as.Date
但没有 %H:%M:%S
组件:
as.Date("Thu Nov 8 2012", "%a %b %d %Y")
# [1] NA
我有什么想法可能做错了吗?
2 回答
我认为这正如您所猜测的那样,由于您的语言环境,
strptime
无法解析您的日期时间字符串 . 您的字符串包含缩写的工作日(%a
)和缩写的月份名称(%b
) . 这些时间规范在?strptime
中描述:locales
的问题也适用于as.POSIXct
,as.POSIXlt
和as.Date
.来自
?as.POSIXct
:来自
?as.Date
:因此,如果字符串中的工作日和月份名称与当前语言环境中的名称不同,则
strptime
,as.POSIXct
和as.Date
无法正确解析字符串并返回NA
.但是,您可以通过更改
locales
来解决此问题:使用我的个人语言环境,我可以重现您的错误:
只是搞乱了同样的问题,发现这个解决方案更加清洁,因为不需要手动更改任何系统设置,因为在
lubridate
包中有一个包装函数来完成这个工作,你所要做的就是设置参数locale
: