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

Septiembre 2nd, 2010 | por rvaquerizo |

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.

  1. 2 Respuestas en “Trucos R. Establecer la configuración local de una fecha”

  2. Por jaume, Sep 2, 2010 | Responder

    ¡¡Gracias!!

    Es la típica cosa trivial que sabes que se tiene que poder hacer, pero que no tienes ni la más remota idea de como se hace y menos aun de como buscarlo/preguntarlo en internet.
    ¿Donde se aprenden estas cosas realmente útiles?

    jaume

  3. Por Carlos J. Gil Bellosta, Sep 3, 2010 | Responder

    Muy bueno.

    Si hay algo en el mundo que odio (y me da pereza) es manipular fechas. Esta entrada va a ser mi referencia para este tipo de manipulaciones en el futuro.

Publica un Comentario