2017-06-20 73 views
0

我需要在R中格式化日期,其格式为“01OCT2011”。问题是,功能as.Date只是考虑德国月。在这里,我举一个例子:函数as.Date只是识别德国月份 - 但不是英文月份

> test <- c("15MAI2006","01OCT2011") 
> test1 <- as.Date(test, format='%d%B%Y') 
> test1 
[1] "2006-05-15" NA 

“MAY”是德语“MAI”。该功能没有得到英文拼写OCT的日期。

+1

找到其他系统格式看起来法国虽然 – HubertL

回答

0

如果你是“完全确定”的语言是德语试试这个:

Sys.setlocale("LC_ALL","German") 

test <- c("15MAI2006","01OKT2011") 
as.Date(test, format='%d%B%Y') 

[1] "2006-05-15" "2011-10-01" 

但是,你有你的原始数据“01OCT2011”,十月应该十月

+0

不要这样想的语言环境。这产生了相同的结果:as.Date(c(“01Okt2011”,“01OKT2011”,“01okt2011”),format ='%d%B%Y') –

+0

反之亦然。我的日期是英文的,我想用英文翻译它们。但我认为在我的情况下,R只考虑德国月份而不是英语。这就是为什么我的输出是用“MAI”确认,而不是用“MAY”确认。与“OCT”相同。我试过Sys.setlocale(“LC_ALL”,“英文”)...但没有工作。 –

+0

这将是合乎逻辑的。我的系统有问题,也许我无法获得相同的结果 –

0

如果你真的想要同时获得英文和德文日期,您需要一次获得一个。

Sys.setlocale("LC_TIME", "de_DE") 
test1 <- as.Date(test, format='%d%B%Y') 
na.test1 <- is.na(test1) 
Sys.setlocale("LC_TIME", "C") 
test1[na.test1] <- as.Date(test[na.test1], format='%d%B%Y') 

我用德语了以上的OSX,但你可以在documentation for Sys.setlocale

+0

很高兴知道...非常感谢你! –