Trucos R. Establecer la configuración local de una fecha

Cuando manejamos datos las fechas nos producen muchos quebraderos de cabeza, por ejemplo cuando tenemos que transformar un caracter a fecha. En mi opinión R es una de las herramientas las flexibles y rápidas para trabajar con fechas, claro que acostumbrado a SAS cualquier otra herramienta me parece perfecta. A lo que vamos, imaginemos la siguiente situación :

?as.Date

x <- c("1jan1960", "2jan1960", "31mar1960", "30jul1960")

z <- as.Date(x, "%d%b%Y")

z

[1] NA NA "1960-03-31" "1960-07-30"

Se trata de transformar un texto a fecha en R. El formato del texto es d mes en inglés año con 4 cifras. Para transformar a fecha tenemos la función as.Date que recibe como parámetros el objeto y el formato de la fecha, el más habitual sería %d/%m/%Y 10/09/1976. Para meses en formato nombre empleamos %b pero en este caso «1jan1960» nos produce un valor perdido sin embargo «31mar1960» si se transforma correctamente ¿Por qué motivo sucede esto?

Sys.setlocale("LC_TIME")

[1] "Spanish_Spain.1252"

Nuestra configuración de fecha es spanish, luego january no es reconocido por R, tendremos que hacer:

x <- c("1ene1960", "2ene1960", "31mar1960", "30jul1960")

z <- as.Date(x, "%d%b%Y")

z

[1] "1960-01-01" "1960-01-02" "1960-03-31" "1960-07-30"

Ya funciona correctamente. Si deseamos modificar nuestra configuración tendremos que hacer lo siguiente:

Sys.setlocale("LC_TIME", "English")

x <- c("1jan1960", "2jan1960", "31mar1960", "30jul1960")

z <- as.Date(x, "%d%b%Y")

z

Ya tenemos los datos como deseábamos. Muy sencillo y fácil de recordar. Saludos.