从字符%d%b%Y读入as.Date的日期

时间:2017-02-24 16:04:48

标签: r locale as.date

这有效:

as.Date("22JAN2010", format="%d%b%Y")
>"2010-01-22"

这不是:

as.Date("22MAR2010", format="%d%b%Y")
>NA

它打破了MAR,MAY,OCT 适用于JAN,FEB,APR,JUN,JUL,AUG,SEP,NOV,DEC。

巧合的是,我的Windows 7操作系统语言是荷兰语,日期缩写为MAA,MEI,OKT。但那些人也不会工作。

1 个答案:

答案 0 :(得分:-1)

您可以找到内置数据对象将识别的月度缩写:month.abb是国际化的。

 month.abb
 [1] "Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug" "Sep" "Oct" "Nov" "Dec"

sessionInfo()函数也返回语言环境,对我来说是:

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

...并且可以用Sys.getlocale()得到那个单一的向量,但我怀疑你还有别的东西。正如@Jaap评论的那样,价值由Sys.setlocale控制。 '{1}}项的核心应该由strptime使用'LC_TIME'项的特定值。

as.Dat.character函数有2个命名参数“category”和“locale”,这就是使用Sys.setlocale的第一个建议失败的原因。它似乎也是我眼中典型的R语法,因为通常的旋风形式主义并没有引用这些名字。我多次犯了这个错误。)