2015-08-17 4 views
5

Ho un file di testo che include le date e voglio convertirlo in un datatable.R Leggi il mese abbreviato di una data che non è in inglese

Conversione le date come il 03-FEB-2011 può essere fatto con

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

Il problema è che la colonna è in spagnolo, quindi non ottengo Jan ma Ene, o agosto, ma fa. Come posso cambiare la localizzazione in modo che l'abbreviazione% b funzioni per lo spagnolo? C'è un altro modo per raggiungere questo obiettivo?

+0

Penso che dovresti fare 'Sys.setlocale (locale =" en_US.UTF-8 ")' ovviamente invece di 'en_US.UTF-8' devi usare il diritto t locale che puoi trovare con 'system (" locale -a ", intern = TRUE)'. Fammi sapere se funziona bene. – SabDeM

+0

che è '" es_ES.UTF-8 "' nel tuo caso. – SabDeM

risposta

3

Come il mio precedente commento, ecco una risposta completa e testata. Come ho già detto, devi impostare il tuo locale a destra per i tuoi dati (in questo caso lo spagnolo).

Il codice che ti permette di fare che è la seguente:

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

si può vedere l'elenco completo dei disponibili locale s con system("locale -a", intern = TRUE) (non so se funziona bene su sistemi Windows).

Ecco un esempio:

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

Grazie. Ha funzionato! –

2

Se non è possibile aggiungere locali per il sistema operativo,

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

il pacchetto readr() ha modi per specificare e persino creare locali:

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