2015-08-17 18 views
5

Mam plik tekstowy zawierający daty i chcę przekonwertować go na datatable.R Odczytaj skróconą datę z miesiąca, która nie jest w języku angielskim.

Konwersja daty, takie jak 03-lut-2011 można zrobić z

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

Problem polega na tym, że kolumna jest w języku hiszpańskim, więc nie rozumiem, ale sty en, ale czy sie temu. Jak mogę zmienić ustawienia narodowe, aby skrót% b działał dla języka hiszpańskiego? Czy jest jakiś inny sposób na osiągnięcie tego?

+0

Myślę, że powinieneś zrobić 'Sys.setlocale (locale =" en_US.UTF-8 ") oczywiście zamiast' en_US.UTF-8' musisz użyć prawego t locale, które można znaleźć za pomocą 'system (" locale -a ", intern = TRUE)'. Daj mi znać, jeśli działa dobrze. – SabDeM

+0

co oznacza "" es_ES.UTF-8 "' w twoim przypadku. – SabDeM

Odpowiedz

3

Jako mój poprzedni komentarz, oto pełna i przetestowana odpowiedź. Jak już powiedziałem, musisz ustawić swój locale na prawo dla swoich danych (w tym przypadku hiszpańskim).

Kod, który pozwala, aby to zrobić jest następujący:

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

można zobaczyć pełną listę dostępnych locale sz system("locale -a", intern = TRUE) (nie wiem, czy to działa dobrze w systemach Windows).

Oto przykład:

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

Dzięki. To się udało! –

2

Jeśli nie można dodać lokalizacje do systemu operacyjnego,

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

pakietu readr() ma sposoby, aby określić, a nawet tworzyć ustawień regionalnych:

> library(readr) 
> parse_date("31 DICIEMBRE 2011","%d %B %Y",locale=locale("es")) 
[1] "2011-12-31" 
Powiązane problemy