функция as.Date просто распознает немецкий месяц, но не английский месяц

Мне нужно преобразовать даты в R, которые имеют формат, например. "01 октября 2011". Проблема в том, что функция as.Date просто учитывает немецкий месяц. Вот у меня есть пример:

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

«МАЙ» по-немецки «MAI». Функция не получила дату в формате OCT на английском языке.


person I.AH    schedule 20.06.2017    source источник
comment
хотя выглядит по-французски   -  person HubertL    schedule 21.06.2017


Ответы (2)


Если вы «полностью уверены», что язык немецкий, попробуйте следующее:

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

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

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

Однако у вас в исходных данных "01OCT2011", а октябрь должен быть Okt.

person Edgar Santos    schedule 20.06.2017
comment
Не думайте так. Это дает те же результаты: as.Date(c(01Okt2011,01OKT2011, 01okt2011) , format='%d%B%Y') - person Edgar Santos; 21.06.2017
comment
Нет ист наоборот. Мои даты на английском языке, и я хочу преобразовать их также на английском языке. Но я думаю, что в моем случае R просто учитывает немецкий месяц, а не английский. Вот почему мой вывод подтверждается MAI, а не MAY. То же самое с ОКТ. Я пробовал Sys.setlocale(LC_ALL,English)... но не работает. - person I.AH; 21.06.2017
comment
Это было бы логично, да. Что-то не так с моей системой, возможно, я не могу получить такие же результаты - person Paul Endymion; 21.06.2017
comment
Попробуйте sessionInfo() и убедитесь, что ваш язык английский. - person Edgar Santos; 21.06.2017
comment
@I.AH попробуй Sys.setlocale("LC_TIME", "C") - person azalea; 21.06.2017

Если вы действительно хотите получить как английские, так и немецкие даты, вам нужно будет получить их по одной за раз.

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, но вы можете найти форматы для других систем по адресу документация для Sys.setlocale

person waternova    schedule 20.06.2017