Ayuda Fechas en R

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.

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:

81 opiniones en “Ayuda Fechas en R”

  1. 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 ?

        1. 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)

          1. Hola Javier se puede hacer con toda una columna? es decir, decirle a R que mi columna contiene datos de fecha y hora?

  2. 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

    1. ¡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

  3. 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.

    1. 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"

  4. 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!!

    1. 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!

  5. 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

    1. 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"

  6. 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

    1. 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

  7. 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

    1. 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"

  8. 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

      1. 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.

  9. 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.

    1. 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!

  10. 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

      1. 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.

        1. 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"))

  11. 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

    1. 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)

  12. 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

  13. 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

  14. 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¡

  15. 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).

  16. 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

  17. 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!

  18. 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

  19. 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

  20. 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

    1. 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.

  21. 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.

  22. 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

  23. 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

  24. 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?

  25. 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!

  26. 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.

    1. 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"))

  27. 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

    1. 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)

  28. 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

    1. 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)

  29. 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.

    1. ¡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

    1. 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")

  30. 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

    1. Buenas! Necesitas usar la función de R strptime:

      fecha <- strptime("20220520", format="%Y%m%d")
      resultado <- format(fecha, format="%Y/%m/%d")

    1. 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")

  31. 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

    1. 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".

  32. 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

    1. 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)

  33. 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

    1. 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)

  34. 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

Responder a Javier Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Salir de la versión móvil