通过在OSX上解析法语日期的神秘错误

PAC*_*PAC 11 r date

我有一个带有法语日期的字符向量.我想将它们转换为R中的日期格式.它似乎有效,但有一些神秘的错误.例如,R承认"30 juin 2012"而不是"30 juillet 2012":

> as.Date("30 juin 2012", format = "%d %B %Y")
[1] "2012-06-30"
> as.Date("28 février 2012", format = "%d %B %Y")
[1] "2012-02-28"
> as.Date("30 juillet 2012", format = "%d %B %Y")
[1] NA
Run Code Online (Sandbox Code Playgroud)

你有什么解释吗?

PS:我的本地设置是法语UTF8

> Sys.getlocale()
[1] "fr_FR.UTF-8/fr_FR.UTF-8/fr_FR.UTF-8/C/fr_FR.UTF-8/fr_FR.UTF-8"
Run Code Online (Sandbox Code Playgroud)

小智 7

我真的没有解释,但我确实有一个解决方案.使用","而不是"."与德语数字有类似的问题.对于小数和一些不同的写日期方式也是如此.以下是我通常对数据格式不正确的操作:

a<-"30 juillet 2012"

b<-gsub(pattern="juillet", a, replacement="july")

as.Date(b, format="%d %B %Y")
[1] "2012-07-30"
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助你.如果"7月"在您的系统上不起作用,您可以随时将其替换为7.就像这样

a<-"30 juillet 2012"
b<-gsub(pattern="juillet", a, replacement="/ 7 /")
b<-gsub(pattern="|| ", b, replacement="")
as.Date(b, format= "%d/%m/%Y")
Run Code Online (Sandbox Code Playgroud)

问候,本


Ric*_*ton 6

正如GSee所说,这是一个地方问题.使用您的语言环境设置为法语Sys.setlocale,您的代码示例运行正常.

在Linux下(我认为OS X也是,但没有经过测试):

Sys.setlocale(locale="fr_FR")
Run Code Online (Sandbox Code Playgroud)

在Windows下:

Sys.setlocale(locale="French_France")
Run Code Online (Sandbox Code Playgroud)

UTF-8在GSEE的评论是字符编码,并且是可选的.有关详情?iconvlist,请参阅.