Cuando vamos a realizar algún tipo de código en R para el que necesitemos utilizar fechas, debemos tener presente el formato en el que R almacena las fechas, ya que nos será de utilidad a la hora de trabajar con ellas.
El estándar utilizado por R para las fechas es yyyy-mm-dd, es decir, año-mes-día.
Para introducir una fecha en R, debemos utilizar siempre el comando ‘as.Date‘. Si no utilizamos este comando, el programa leerá nuestra fecha como una variable ‘character‘, y lógicamente no podremos utilizarla como fecha.
Contenidos
Trabajando con fechas en R
Vamos a verlo con un ejemplo:
navidad2019 <- ("2019-12-25")
navidad2019
[1] "2019-12-25"
class(navidad2019)
[1] "character"
Sin embargo, si utilizamos el comando as.Date en el momento de almacenar la fecha:
navidad2019=as.Date("2019-12-25")
navidad2019
[1] "2019-12-25"
class(navidad2019)
[1] "Date"
Ahora sí hemos conseguido definir como fecha el 25 de diciembre de 2019 en R.
Otro comando predefinido que nos puede ser muy útil cuando estemos escribiendo algún código que utilice fechas, es la “captura” de la fecha almacenada en el sistema (en tu PC).
Sys.Date()
[1] "2020-02-26" # Hoy es 26 de febrero de 2020
Formatos de fecha en R
Como os he comentado antes, R siempre almacena las fechas en el mismo formato, sin embargo, es capaz de leer muchos más formatos de fechas:
# Símbolo # Significado %d día (numérico, de 0 a 31) %a día de la semana abreviado a tres letras %A día de la semana (nombre completo) %m mes (numérico de 0 a 12) %b mes (nombre abreviado a tres letras) %B mes (nombre completo) %y año (con dos dígitos) %Y año (con cuatro dígitos)
Cuando queramos introducir en R una fecha con un formato distinto al predeterminado, volveremos a usar el comando as.Date pero acompañado del formato deseado (haciendo uso de la tabla anterior).
navidad2020=as.Date("25/12/2020",format="%d/%m/%Y")
navidad2020
[1] "2020-12-25"
navidad2021=as.Date("25 Diciembre 2021",format="%d %B %Y")
navidad2021
[1] "2021-12-25"
Como podemos ver, hemos introducido fechas con formatos distintos, y R ha sido capaz de leerlas y guardarlas correctamente.
Sin embargo, si el formato y la fecha introducida no coinciden, R no será capaz de guardar la variable, y nos devolverá una variable vacía:
navidad2021=as.Date("25-dic-2021",format="%d-%m-%Y")
navidad2021
[1] NA
Del mismo modo que estamos introduciendo fechas en otro formato, pero R nos las sigue mostrando en su formato predeterminado, también podemos hacer que nos las muestre en pantalla con el formato que nosotros queramos. Para ello, podremos utilizar cualquiera de las combinaciones indicadas en el cuadro de arriba:
navidad2019
[1] "2019-12-25"
navidad2019 <- format(navidad2019,"%d %B %Y")
navidad2019
[1] "25 diciembre 2019"
# ¡PERO ATENCIÓN! Ya no es tipo fecha:
class(navidad2019)
[1] "character"
También tenemos la opción de trabajar con vectores de fechas, de este modo podremos tratar rápidamente la información de un conjunto de fechas:
dias=c("1/10/2005","2/2/2006","3/4/2006","8/11/2014")
dias
[1] "1/10/2005" "2/2/2006" "3/4/2006" "8/11/2014"
class(dias) # Vemos que este vector todavía no es una fecha:
[1] "character"
Recuerda que para definir una fecha en R, debemos utilizar la fórmula as.Date, y definir el formato de fecha que estamos utilizando:
dias2 = as.Date(dias,format="%d/%m/%Y")
dias2
[1] "2005-10-01" "2006-02-02" "2006-04-03" "2014-11-08"
class(dias2)
[1] "Date"
Operaciones con fechas en R
Siempre que almacenemos un valor como fecha en R, accederemos a una serie de fórmulas predefinidas para realizar operaciones con fechas.
# Podemos contar el número de días entre dos fechas:
ene01 = as.Date("2019-01-01")
ene30 = as.Date("2019-01-30")
ene30-ene01
[1] Time difference of 29 days
Solamente podremos realizar estos cálculos cuando las fechas estén almacenadas correctamente en R, en caso contrario, nos devolverá un error:
navidad2021
[1] "2021-12-25"
navidad2019
[1] "25 diciembre 2019"
# navidad2019 ya no es tipo fecha
navidad2021-navidad2019
Error in unclass(as.Date(e1)) - e2 :
non-numeric argument to binary operator
La función difftime en R (en el enlace adjunto os cuento más sobre esta función) nos permite obtener diferencias entre fechas en semanas, horas, minutos o segundos.
# Diferencia en semanas (weeks)
difftime(ene30, ene01, units = "weeks")
[1] Time difference of 4.142857 weeks
# Diferencia en horas (hours)
difftime(ene30, ene01, units = "hours")
[1] Time difference of 696 hours
# Diferencia en minutos (mins)
difftime(ene30, ene01, units = "mins")
[1] Time difference of 41760 mins
# Diferencia en segundos (secs)
difftime(ene30, ene01, units = "secs")
[1] Time difference of 2505600 secs
En R también podemos sumar o restar fechas
# Sumar días a una fecha
navidad2020 + 6
[1] "2020-12-31"
# Restar días a una fecha
navidad2020 - 24
[1] "2020-12-01"
Si necesitas ayuda con las fechas en R, también te puede interesar este otro tutorial de R:
Roger Paguaga dice
Cómo puedo leer la fecha de creacion o modificación de un archivo en especifico???
Saludos.
Javier dice
¡Buenas! ¿Desde R te refieres?
Anónimo dice
Hola quiero hacerlo pero solo con el año pero cuando le doy el formato pide que tenga dia y mes ¿como hago para hacerlo con solo una dato ?
Javier dice
Buenas. Necesito que seas un poco más concreto, no entiendo cuál es la duda. ¿Qué es lo que quieres hacer con el año?
Un saludo.
Miller Javier dice
Hola Javier me puedes ayudar a convertir 2022-12-16 16:19:46 en 16/12/2022 16:19:46 ? Gracias
Javier Mendoza dice
Te dejo aquí el código de R:
fecha1 <- strptime("2022-12-16 16:19:46", format="%Y-%m-%d %H:%M:%S")
fecha2 <- format(fecha1, format="%d/%m/%Y %H:%M:%S")
print(fecha2)
Gisela dice
Hola Javier se puede hacer con toda una columna? es decir, decirle a R que mi columna contiene datos de fecha y hora?
Jorge Villablanca Mouesca dice
Hola, tengo un dataset, donde el campo f_matriculación esta definido como character.
Necesito transformar esa columna a formato “date” o fecha y luego obtener para esa columna solo el año
Cual sería el script?
Si me pudieras copiar a mi mail, jorgevillablanca@hotmail.com
Saludos
Javier dice
¡Te contesto por correo!
Y añado aquí la respuesta:
a <- c("01/01/2009", "01/01/2010" , "01/01/2011")
substring(a,7,10)
[1] "2009" "2010" "2011"
Otra opción sería, por ejemplo, convertirla a tipo fecha, y sobre esta fecha quedarnos el año (en este caso lo hacemos en formato numérico):
date <- as.Date('01/01/2011','%m/%d/%Y')
date
[1] "2011-01-01"
year <- as.numeric(format(date,'%Y'))
year
[1] 2011
Alejandra Rivera dice
Hooola! podrias poner ese comando que le respondiste por correo, requiero exactamente lo mismo. :)
Javier dice
Hola!! Añado la respuesta arriba :)
Alejandra Rivera dice
Hola! Javier otra pregunta, tengo un dataset el cual tiene la fecha corta, es decir (06-12-19), como no sé los otros dos dígitos, pero asumo yo que son de 1919, no de 2019, como hago para indicarselo al software, teniendo en cuenta que habrán otras observaciones que si son del 2000 en adelante como 01 que es 2001.
Javier dice
Hola Alejandra!!
Es cierto que R tiene este problema desde la fecha 1970, es decir, no es capaz de leer directamente el “69” como 1969, y el mismo problema del 1969 ocurre para todos los años anteriores a esta fecha (es un tema interno del código R, que trata como “año 0” el 1 de enero de 1970).
Te propongo una solución a tu problema:
fecha = c("6/12/19","10/05/39")
as.Date(format(as.Date(fecha,format="%d/%m/%y"), "19%y%m%d"), "%Y%m%d")
[1] "1919-12-06" "1939-05-10"
Jesús dice
Hola!
Tengo un dataset al que quiero agregarle fechas. Mi dataset está formado por un dato por día, es decir 365, desde 1 de enero a 31 de diciembre, y no se cómo agregarle la fecha automáticamente sin tener que hacerlo manual. ¿alguna idea?
Gracias!!
Javier dice
Hola Jesús!!
Es muy sencillo utilizando la función “seq”. Para el año 2020 sería así:
seq(as.Date('2020-01-01'), by='day', length=366)
Te en cuenta que son 366 porque 2020 es año bisiesto, en caso contrario sería 365.
Saludos!
Anónimo dice
Gracias!!
Santiago dice
Hola Javier, tengo un dataset de 18 columnas, y 2 de ellas son month y year, y necesito crear una nueva columna en modo fecha usando el mes y el año, y no se me ocurre como hacerlo.
Muchas gracias
Javier dice
Hola Santiago!!
Échale un vistazo a la librería “zoo”, creo que podría ayudarte bastante la función llamada as.yearmon.
Te pongo un ejemplo:
#Concatenamos las variables donde tengamos el mes y el año
nueva_fecha = paste(10,1993, sep=«")
#Utilizamos la función yearmon para convertir esa concatenación en una fecha
fecha <- as.yearmon(as.character(nueva_fecha), "%m%Y")
fecha
[1] "oct. 1993"
DANIELA SEVILLA MOREIRA dice
ene01 = as.Date(“2019-01-01”)
ene30 = as.Date(“2019-01-30″)
ene30-ene01
[1] Time difference of 29 days
Una pregunta en este caso, hay alguna manera para que en lugar que me tire ” [1] Time difference of 29 days” simplemente me tire la cantidad 29 ?
Es para luego usar ese número en una fórmula
Javier dice
Hola Daniela!!
Simplemente añade la función as.numeric delante de la resta para obtener el número.
ene01 = as.Date("2019-01-01")
ene30 = as.Date("2019-01-30″)
as.numeric(ene30-ene01)
[1] 29
Daniel dice
Hola Javier, tengo un data set que tiene el formato de 1/3/2020, pero en R necesito hacerla de la forma 01/03/2020 para poderla hacer date. Cómo puedo hacer esto con dplyr. Gracias
Javier dice
Hola Daniel, no entiendo cual es la dificultad. Fíjate en la tabla que puse arriba sobre los formatos.
x <- "1/3/2020"
fecha <- as.Date(x,'%d/%m/%Y')
fecha
[1] "2020-03-01"
Anónimo dice
Hola Javier, si quiero pasar esa diferencia en días, a meses, qué código puedo utilizar? Gracias
Javier dice
Hola, mírate la función difftime https://estadisticamente.com/extraer-fecha-r-ano-mes-dia/
Evangelina dice
Hola Javier, como puedo hacer si quiero armar una fecha que tenga solo el mes y el año? estoy trabajando con promedio mensuales y quiero ver como aumenta o disminuye año a año. Desde ya muchas gracias!! saludos
Javier dice
Hola Evangelina!!
Simplemente tienes que poner el formato sin día:
as.Date(fecha,'%m/%Y')
Saludos!
Anónimo dice
Hola Javier, yo intente hacer eso y me da vacío, no me quedo otra que implementar as.yearmon, aunque no es lo que buscaba.
Adriana dice
Hola, quisiera separar los las fechas de las horas de este código
fecha_hora<- seq(as.POSIXct('2019-01-01'), by='1 hour', length=8760)
Si pudieras ayudarme, te lo agradecería.
Javier dice
Hola Adriana!
No entiendo el problema, he probado ese código y hace lo que quieres, ¿no? Separa hora a hora y lo almacena en la variable fecha_hora
Saludos!
Katheryn Sarahi dice
Hola, tengo una base de datos en R con 1800 datos, y asi el numero de fechas de nacimiento de diferentes personas, necesito restar de cada fecha de la base de datos una fecha en especifica del pasado tambien. Como debo hacerlo? extraje la variable con $ y luego solo la resto con la fecha correspondiente pero recibo: que solo se puede sustraer de la Data. Muchas gracias
Javier dice
¿Estás usando el as.date cuando creas ese campo?
Julia Farías dice
Hola, yo tengo el campo “Fecha.de.Nacimiento” con 91 obs. De mi data frame “mujeres”. Intento pasarla a date, y no lo logro cuando consulto el class me dice factor. Preciso crear un nuevo campo “Edad” para calcular la edad a hoy.
Javier Mendoza dice
Puedes calcular la edad utilizando la libreria lubridate de R, que permite calcular la diferencia entre dos fechas. Te pongo un código de ejemplo:
# cargamos la libreria
library(lubridate)
fecha_nacimiento <- as.Date("1990-01-01")
fecha_actual <- Sys.Date()
edad <- floor(duration(fecha_actual - fecha_nacimiento, unit = "years"))
Franklin Chiluisa dice
Estimado quiero que en mi grafica en el eje x aparezca la etiqueta como fecha , el dato es diario.
Mis dos varaibles son fecha y hc(numero de taenciones)
Coloque asi porque solo necesito la infromacion del 2020
mytimeseries= ts(data=mydata$HC,start = as.Date(“13/03/2020”), frequency = 365)
plot(mytimeseries)
Al hacer la grafica en el eje x me sale la etiqueta como -714701.0
Javier Mendoza dice
Para que en tu gráfica de tiempo aparezcan las etiquetas de fecha en el eje x, debes especificar el argumento “xaxt” como “”n”” en la función “plot()”.
También debes utilizar la función “axis.Date()” para formatear las etiquetas del eje x como fechas. A continuación te muestro un ejemplo de cómo podrías hacerlo:
plot(mytimeseries, xaxt = "n")
axis.Date(1, at = seq(from = as.Date("2020-03-13"), to = as.Date("2020-12-31"), by = "day"), format = "%d-%m-%Y", cex.axis = 0.8)
Franklin chiluisa dice
Hola tengo mis datos diarios con dos variables fecha y atenciones necesito hacer dos operaciones.
1. Filtrar el inicio desde el 13/30/2020 hasta el dato actual
2.graficar la data pero en el eje x se etiquete la fecha
Javier dice
Hola!
1. Para la fecha actual simplemente utiliza el comando Sys.Date() como explico en este post
2. Simplemente necesitas un vector con la secuencia entre tu fecha inicial y tu fecha Sys.Date(). He subido precisamente hoy una nueva entrada que te puede ayudar con eso https://estadisticamente.com/crear-una-secuencia-de-fechas-en-r/
Paloma dice
Buenas,
Tengo dos columnas, una de ellas con fechas de nacimiento de un animal y otras con fechas en el que se adopto un animal, me gustaria hacer la diferencia para saber la edad en la que estas mascotas fueron adoptadas. Como podria hacerlo? Seria hacer una diferencia de ambas columnas para que me diera un numero
Gracias
Javier dice
Buenas!!
¿No te funciona el apartado “Operaciones con fechas en R”?
Gabriela Cardenas dice
Hola Javoer,
He importado unos datos de excel y las fechas me dice que quedaron con un formato POSIXct. Como las puedo poner en formato fecha de R?
Gracias. Tu blog es excelente¡
Javier dice
No te funciona el as.Date ?
Eilyn dice
4. La función tipo_dia toma de parámetro una fecha, si el día es de lunes a viernes,
indica entre semana y si es sábado o domingo, indica fin de semana (Còmo lo resuelvo).
Javier dice
Puedes resolverlo con un if/else
Rafael dice
Buenos días Javier,
En una base de datos se recogen determinados parámetros definidos en el espacio, por ejemplo, una retención en una carretera de longitud 5 kilómetros, entre el punto kilométrico 0 y el punto kilométrico 5, y en el tiempo, desde las 7:35:10 h a las 9:42:20 h.
Quisiera asignar a cada intervalo de 15 minutos (de 7:15:00 a 7:30:00 h, de 7:30:00 a 7:45:00 h, …) el valor correspondiente, en este caso, los 5 kilómetros.
Seguramente me estoy liando con multitud de ifelse, puedes sugerirme alguna opción más eficiente?
Gracias y saludos
Alejandra Cortés dice
Hola Javier, cómo estas?
quería preguntarte como puedo hacer para que todos mis años tengan por definición 365 días
df %
mutate(Indicador = 1:nrow(df))
df %
mutate(Fecha = dmy(“31-12-1978”)+Indicador) %>%
select(!Indicador)
Ya que al definirlo de esta manera, me quedan algunos años en 366 días.
muchas gracias!
Javier dice
Te quedan en 366 días los años bisiestos, ¿no? Es lo correcto…
Gabriela Cardona dice
Hola, necesito hacer una resta de fechas pero en una base de datos extenuante, es decir, necesito restar dos columnas de fechas. ¿Me podrías ayudar?
Gracias
Javier dice
¿Y qué problema te estás encontrando? En principio debería ser suficiente con restar una columna a la otra y ya está!!
Maria dice
Hola,
Tengo la columna de fecha en formato año-mes-día, con datos de cuatro años, y quiero hacer otra columna en la que la fecha sea una variable número donde la primera fecha es 1, y luego 2, 3, 4….etc.
Gracias
Jenny dice
Hola!
Quisiera saber si en R hay alguna función que me pueda decir si un listado de fechas es consecutiva en cuanto al mes.
Ejemplo:
2016-04-01
2016-06-01
2016-07-01
2016-08-01
En este caso no sería consecutivo, ya que se salta desde el mes de abril de 2016 hasta el mes de junio de 2016
Javier dice
Puedes utilizar una columna adicional para hacer lags, en esa columna sacas la resta con la fecha anterior y si el lag es mayor de 1 pues significa que no son consecutivos.
Oswaldo dice
Hola Javier.
Qué puedo hacer para recuperar solamente el mes de una fecha y agregarlo en una columna nueva?
Espero me puedas ayudar y gracias de antemano.
Maleya dice
Hola, tengo una data de eventos por día (en un rango de 4 años), quisiera crear un subgrupo de eventos por año, la columna de fecha está en formato ‘3/01/2003’.
Qué función debería utilizar?
Gracias
carlos arteta dice
Javier previo saludo, agradecere me puedas apoyar en el siguiente codigo, lo que trato de hacer es poner en el eje X los meses “Ene”, “Feb”,…..”Dic”, intente hacer y me vota error
intente con
mm <-c("ENE","FEB","MAR","ABR","MAY","JUN","JUL","AGO","SET","OCT","NOV","DIC")
mm1 <- as.factor(mm)
meses <- factor(mm1, levels =c("ENE","FEB","MAR","ABR","MAY","JUN","JUL","AGO","SET","OCT","NOV","DIC"))
df <- data.frame(fecha = c(1 ,2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12),
temperatura = c(13.78,13.80,14.00,13.76,13.10,12.66,12.75,13.21,13.74,13.75,13.84,14.05),
humedad_rel = c(72.81,77.33,74.28,62.30,51.83,50.18,46.80,45.22,46.58,45.74,50.05,59.04),
evaporacion = c(98.20,74.22,101.13,124.28,145.78,152.32,153.19,281.47,165.04,165.88,151.08,130.29))
df <- gather(data = df, key = 'Variable', value = 'Valor', -fecha)
ggplot(df, aes(x = fecha, y = Valor)) +
geom_line() +
scale_x_continuous(expand = c(0,0),
breaks = df$fecha, minor_breaks = NULL) +
facet_wrap(~variable,nrow = 3,scales = 'free_y',
strip.position = "left",
labeller = as_labeller(c(evaporacion = "evaporacion (mm)",
humedad_rel = "Humedad relativa (%)",
temperatura = "Temperatura (ºC)"))) +
ylab(NULL) +
theme_bw()+
theme(strip.background = element_blank(),
strip.placement = "outside")
Gracias
Bastián dice
Hola Javier,
Tengo una base de dato donde la fecha no tiene separador. Por ejemplo el 1 de enero del 2019 está escrito: 1012019, y el 10 de febrero del 2019 está escrito: 10022019. Notar que los meses con un dígito si llevan un “0” antes del número, pero los días no.
Para mi es muy necesario transformar esto a formato fecha de Rstudio ¿Cómo logro esta transformación?
Mencía dice
Hola Javier,
Tengo una columna con los meses (“may”, “jun” ,”jul”, “aug”, “oct”, “nov”, “dec”, “mar”, “apr”, “sep”) y otra con los años en modo numerico, y necesito hacer una columna de tipo date con estas dos en Rstudio.
Muchas gracias!
Cesar dice
Hola Javier, estoy aprendiendo R, una de mis dudas con el tema de fechas es que llamo una base que está en excel pero con el formato “43115”, el cual no tengo idea como se llama ese formato, pero quisiera saber como lo puedo formatear esa columna en el R con que función, he buscado por cielo mar y tierra pero sin éxito al respecto.
Anónimo dice
library(readxl)
ReporteEgresadosActualizado <- read_excel("D:/OneDrive – Ministerio de Educación/Reportes/CONECTA/ReporteEgresadosActualizado.xlsx",
col_types = c("numeric", "date", "text",
"text", "text", "text", "numeric",
"text", "text", "text", "date", "text",
"text", "text", "text", "text", "text",
"text", "text", "text", "text", "date",
"text"))
Nicolas dice
Amigo una consulta, tengo una base de datos en formato CSV separado por “;” por lo tanto, para leer la base tengo que utilizar read.csv2, el problema que tengo es que la fecha viene en este formato ejemplo: “14-03-2021 0:00:00”, R al leerla la deja de esta forma 4/03/2021 0:00. No sé por qué lo deja así, pero más allá de eso lo que quiero saber es como puedo dejar la base por ejemplo en un formato “yyyy-mm-dd”
He intentado algunas funciones con as.date o parse.date y los resultados que me arroja son NA, como que no reconoce el formato.
Ojalá me puedas ayudar
Javier Mendoza dice
Te dejo por aquí el código de R:
fecha <- strptime("14-03-2021 0:00:00", format="%d-%m-%Y %H:%M:%S")
fecha2 <- format(fecha, format="%Y-%m-%d")
print(fecha2)
Daniela dice
Hola, tengo una duda en mi Excel, hay una columna en formato Jun 01, 2021 y al leerlo en R es char, entonces le explique:
Fecha = as.Date(“Jun01, 2021, format = “%b %d, %Y”)
Fecha
y me aparece como NA
Nose que hacer, me pueden ayudar o aconsejar, porfavor
Javier Mendoza dice
El código que escribes es correcto, pero te sobra un espacio!
fecha <- "Jun01, 2021"
fecha_formateada <- as.Date(fecha, format="%b%d, %Y")
print(fecha_formateada)
Johanna dice
Hola!
Quisiera saber como puedo filtrar una base de datos por fecha? Me explico, la idea es elegir el primer evento acontecido. Tengo varias filas por cada evento (medida del evento x en varios puntos temporales, con cada medida temporal en filas distintas), y me quiero quedar solo con la fila del primer evento x. Hay alguna forma de hacerlo en R?
Gracias.
Javier Mendoza dice
¡Claro que sí! Puedes filtrar una base de datos por fecha en R utilizando la función filter() del paquete dplyr. Si tienes una columna de fechas en tu base de datos, puedes utilizar filter() para seleccionar solo las filas que corresponden al primer evento.
Aquí te muestro un ejemplo con una base de datos de medidas de eventos a diferentes puntos temporales:
# Cargar paquetes necesarios
library(dplyr)
# Crear base de datos de ejemplo
datos <- data.frame( evento = c("evento1", "evento1", "evento1", "evento2", "evento2", "evento2"), fecha = as.Date(c("2022-01-01", "2022-01-02", "2022-01-03", "2022-01-01", "2022-01-02", "2022-01-03")), medida = c(1, 2, 3, 4, 5, 6) )
# Filtrar por el primer evento
datos_filtrados <- datos %>%
group_by(evento) %>%
filter(fecha == min(fecha))
En este ejemplo, la base de datos tiene tres eventos (evento1, evento2, y evento3) y para cada evento hay medidas en diferentes puntos temporales. La columna fecha contiene la fecha de cada medida.
Para filtrar la base de datos por el primer evento, primero agrupamos los datos por evento usando group_by(). Luego, utilizamos filter() para seleccionar solo las filas donde la fecha es la fecha mínima para cada grupo (fecha == min(fecha)). Esto nos dará la fila correspondiente al primer evento de cada grupo.
En este caso, la base de datos datos_filtrados contendrá solo las filas correspondientes al primer evento de cada grupo:
# Ver base de datos filtrada
> datos_filtrados
evento fecha medida
1 evento1 2022-01-01 1
2 evento2 2022-01-01 4
Raymond. dice
Hola,
¿cómo podría poner una fecha en formato YYYYMM?
Gracias.
Javier Mendoza dice
Puedes usar la función as.yearmon() si quieres almacenar la fecha en un objeto de tipo “yearmon” (año y mes), por ejemplo:
df$fecha <- as.yearmon(paste0(df$year,df$month), format = "%Y%m")
Franklin dice
Hola
Tengo una columna llamada IFNA que tiene las fechas con este formato 20220520 y quiero q toda la variable o columna convertir en 2022/05/20
Javier Mendoza dice
Buenas! Necesitas usar la función de R strptime:
fecha <- strptime("20220520", format="%Y%m%d")
resultado <- format(fecha, format="%Y/%m/%d")
Leonardo dice
Hola Javier,
tengo solo una columna con el nombre del Mes, como hago para darle el formato de fecha?
gracias
Anónimo dice
Tengo la misma pregunta
Javier Mendoza dice
Puedes usar la función as.Date() para darle formato de fecha a una columna con el nombre del mes.
Primero, necesitarás crear una cadena de fecha que incluya el año y el día ficticio (por ejemplo, “2000-01-01” para enero de 2000). Luego, puedes usar esa cadena de fecha junto con la columna del mes para crear un objeto de fecha. Te doy un ejemplo:
# para un dataframe llamado "df" con una columna llamada "mes"
df$mes <- as.character(df$mes)
df$fecha <- as.Date(paste0("2000-",df$mes,"-01"), format = "%Y-%b-%d")
Hector dice
Hola, puedes ayudarme con lo siguiente?
tengo un data frame con una columna de fechas en formato de años, es decir por ejemplo:
1960, 1961, 1962 etc… estan almacenadas como numeric, como hago para que R me las convierta a formato de fecha? agradezco tu ayuda
Javier Mendoza dice
Puedes utilizar la función “as.Date()” de R para convertir una variable numérica en formato de fecha. Sin embargo, para convertir una variable numérica en formato “año” a una fecha, primero debes especificar un formato de fecha que contenga solo el año.
A continuación te muestro un ejemplo de cómo podrías convertir una columna “anio” en un data frame “df” a formato de fecha:
df$fecha <- as.Date(paste0(df$anio,"-01-01"), format = "%Y-%m-%d")
En este ejemplo, lo que hacemos primero es concatenar el valor de la columna "anio" con "-01-01", para así poder crear una fecha en formato "YYYY-MM-DD". Luego, pasamos esa nueva variable a tipo fecha utilizando la función "as.Date()" y especificando el formato "YYYY-MM-DD" con el argumento "format".
joaquin dice
hola, tengo un archivo netCDF con fechas en formato numerico (horas desde 1900-01-01), como puedo hacer que r me reconozca las fechas?
saludos
Javier Mendoza dice
Buenas, te dejo por aquí el paso a paso con la solución a tu problema!
# Primero, instalamos y cargamos el paquete `ncdf4`
install.packages("ncdf4")
library(ncdf4)
# Ahora, abrimos el archivo y leemos los datos
nc <- nc_open("ruta/a/tu/archivo.nc")
fechas <- ncvar_get(nc, "nombre_de_la_variable_de_fechas")
# Convertimos las fechas a un formato de fecha reconocible
fechas_formateadas <- as.Date(fechas, origin="1900-01-01")
# Cerramos el archivo
nc_close(nc)
# Imprimimos el resultado
print(fechas_formateadas)
Rodrigo H. dice
Hola buen día, quisiera pedir ayuda no manejo bien r studio, actualmente tengo una base de datos con muchas columnas y filas, una de estas columnas cuenta con fecha dia/mes/año la cual quisiera filtrar y eliminar algunos años y meses en concreto de estas filas
ejemplo base cuenta con 2020 – 2021 – 2022- 2023, quiero eliminar 2020 – 2021, y que solo queden filas desde octubre 2022 hasta la fecha.
y este archivo nuevamente dejarlo en formato original csv
Quedo atento a su comentario y agradezco la ayuda
Saludos
Javier Mendoza dice
Buenas Rodrigo!
Podemos utilizar la función subset() de R:
# Filtrar datos según un rango de años y meses
df_filtrado <- subset(df, year(df$fecha) >= 2020 & year(df$fecha) <= 2022 & month(df$fecha) %in% c(1,2,3))
# Guardar datos filtrados en un archivo csv
write.csv(df_filtrado, file = "datos_filtrados.csv", row.names = FALSE)
Luis Alejandro dice
Hola Javier
¿ Me podrías indicar por favor, de qué manera filtrar datos, necesito el primer día del mes de tres años consecutivos ? Mis datos son diarios desde el 2020-01-02 hasta el 2023-13-02. Y cuando los muestra R resulta que la primer columna donde aparece la fecha no tiene nombre. El nombre de la variable es E. Muchas gracias.
ANCHO
2020-01-02 20.31
2020-01-03 20.48
2020-01-06 20.40
Luis Alejandro dice
Ya pude :). Se puede hacer así:
E[xts:::startof(E, “months”)]
E es el nombre de la variable :))))))
Anónimo dice
Hola, como puedo fijar el año, al momento de correr codigo me pone varios años que no tienen nada que ver.
Javier Mendoza dice
No entiendo tu duda… pon un ejemplo