2017-06-20 13 views
0

Ich muss Daten in R, die das Format haben z. "01OCT2011". Das Problem ist, dass die Funktion as.Date nur den deutschen Monat berücksichtigt. Hier habe ich ein Beispiel:Funktion als.Datum erkennt nur Deutsch Monat - aber nicht Englisch Monat

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

"MAY" ist in Deutsch "MAI". Die Funktion hat das Datum mit der englischen Schreibweise OCT nicht erhalten.

+1

sieht Französisch obwohl – HubertL

Antwort

0

Wenn Sie ‚ganz sicher‘ sind, dass die Sprache das Deutsche versuchen, ist:

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

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

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

Allerdings haben Sie in Ihrer ursprünglichen Daten „01OCT2011“ und sollte Oktober

+0

nicht so denken finden. Dies führt zu den gleichen Ergebnissen: as.Datum (c ("01Okt2011", "01OKT2011", "01okt2011"), Format = '% d% B% Y') –

+0

Nein ist umgekehrt. Meine Termine sind in Englisch und ich möchte sie auch in Englisch umwandeln. Aber ich denke, in meinem Fall betrachte ich nur den deutschen Monat und nicht das Englische. Deshalb wird meine Ausgabe mit "MAI" bestätigt, aber nicht mit "MAY". Gleiches mit "OCT". Ich habe versucht Sys.setlocale ("LC_ALL", "Englisch") ... aber funktioniert nicht. –

+0

Das wäre logisch ja. Irgendetwas stimmt nicht mit meinem System. Vielleicht kann ich nicht die gleichen Ergebnisse erhalten. –

0

OKT werden Wenn Sie wirklich wollen Um sowohl englische als auch deutsche Daten zu erhalten, müssen Sie sie nacheinander erhalten.

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') 

Die locale ich für deutsche oben ist für OSX up verwendet, aber Sie können die Formate für andere Systeme bei documentation for Sys.setlocale

+0

gut zu wissen ... vielen Dank !! –