2015-08-17 2 views
5

Ich habe eine Textdatei, die Datumsangaben enthält und in eine Datentabelle konvertieren möchten.R Lesen Sie den abgekürzten Monat aus einem Datum, das nicht in Englisch ist

die Daten konvertieren, wie 03-FEB-2011 kann mit

data$fecha <- as.Date(data$textDate , "%d-%b-%Y") 

getan werden Das Problem ist, dass die Spalte in Spanisch ist, so dass ich nicht bekommen Jan aber Ene oder August aber vor. Wie kann ich das Gebietsschema ändern, so dass die Abkürzung% b für Spanisch funktioniert? Gibt es einen anderen Weg, dies zu erreichen?

+0

Ich denke, du solltest 'Sys.setlocale (locale =" en_US.UTF-8 ")' natürlich tun, anstatt 'en_US.UTF-8' musst du das righ verwenden t locale, das Sie mit 'system finden können (" locale -a ", intern = TRUE)'. Lass es mich wissen, wenn es gut funktioniert. – SabDeM

+0

das ist "es_ES.UTF-8" in Ihrem Fall. – SabDeM

Antwort

3

Wie mein vorheriger Kommentar, hier ist eine vollständige und getestete Antwort. Wie gesagt, müssen Sie Ihre locale auf die eine richtige für Ihre Daten (in diesem Fall Spanisch) setzen.

Der Code, den Sie, das zu tun erlaubt ist folgende:

Sys.setlocale(locale="es_ES.UTF-8") 

Sie die komplette Liste der verfügbaren locale s mit system("locale -a", intern = TRUE) sehen kann (nicht sicher, ob es gut auf Windows-Systemen funktioniert). Hier

ein Beispiel:

x <- c("03-Ago-2011", "21-Ene-2012") 
as.Date(x, format = "%d-%b-%Y") 
[1] "2011-08-03" "2012-01-21" 
+1

Danke. Das hat funktioniert! –

2

Wenn Sie nicht locales zu Ihrem O hinzufügen können,

> Sys.setlocale(locale = "es") 
[1] "" 
Warning message: 
In Sys.setlocale(locale = "es") : 
OS reports request to set locale to "es" cannot be honored 

Paket readr() Möglichkeiten hat zu spezifizieren und sogar erstellen locales:

> library(readr) 
> parse_date("31 DICIEMBRE 2011","%d %B %Y",locale=locale("es")) 
[1] "2011-12-31" 
Verwandte Themen