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.
¡¡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
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.
Muchas gracias, me has salvado de volverme loco!