• Saltar al contenido principal
  • Saltar a la barra lateral principal

Estadísticamente

Aprende Estadística, R y Python

  • Contacto
  • Newsletter

Ayuda Fechas en R

1 febrero, 2023 por Javier Mendoza 81 comentarios

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
  • Formatos de fecha en R
  • Operaciones con fechas en R
  • En R también podemos sumar o restar fechas

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:

  • Extraer el día, el mes o el año de una fecha en R.

Publicado en: Programar en R

Interacciones con los lectores

Comentarios

  1. Roger Paguaga dice

    10 noviembre, 2019 a las 14:35

    Cómo puedo leer la fecha de creacion o modificación de un archivo en especifico???

    Saludos.

    Responder
    • Javier dice

      13 noviembre, 2019 a las 01:04

      ¡Buenas! ¿Desde R te refieres?

      Responder
  2. Anónimo dice

    24 noviembre, 2019 a las 23:20

    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 ?

    Responder
    • Javier dice

      13 diciembre, 2019 a las 01:37

      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.

      Responder
      • Miller Javier dice

        26 diciembre, 2022 a las 19:54

        Hola Javier me puedes ayudar a convertir 2022-12-16 16:19:46 en 16/12/2022 16:19:46 ? Gracias

        Responder
        • Javier Mendoza dice

          9 enero, 2023 a las 15:57

          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)

          Responder
          • Gisela dice

            20 marzo, 2023 a las 18:35

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

  3. Jorge Villablanca Mouesca dice

    10 enero, 2020 a las 14:33

    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

    Responder
    • Javier dice

      15 enero, 2020 a las 00:18

      ¡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

      Responder
      • Alejandra Rivera dice

        23 enero, 2020 a las 06:31

        Hooola! podrias poner ese comando que le respondiste por correo, requiero exactamente lo mismo. :)

        Responder
        • Javier dice

          23 enero, 2020 a las 16:56

          Hola!! Añado la respuesta arriba :)

          Responder
  4. Alejandra Rivera dice

    23 enero, 2020 a las 06:34

    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.

    Responder
    • Javier dice

      23 enero, 2020 a las 15:05

      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"

      Responder
  5. Jesús dice

    10 marzo, 2020 a las 13:02

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

    Responder
    • Javier dice

      10 marzo, 2020 a las 22:01

      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!

      Responder
      • Anónimo dice

        11 marzo, 2020 a las 10:07

        Gracias!!

        Responder
  6. Santiago dice

    8 mayo, 2020 a las 18:08

    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

    Responder
    • Javier dice

      10 mayo, 2020 a las 18:51

      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"

      Responder
  7. DANIELA SEVILLA MOREIRA dice

    10 mayo, 2020 a las 05:43

    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

    Responder
    • Javier dice

      10 mayo, 2020 a las 18:27

      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

      Responder
  8. Daniel dice

    14 mayo, 2020 a las 05:12

    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

    Responder
    • Javier dice

      14 mayo, 2020 a las 09:13

      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"

      Responder
  9. Anónimo dice

    27 mayo, 2020 a las 12:39

    Hola Javier, si quiero pasar esa diferencia en días, a meses, qué código puedo utilizar? Gracias

    Responder
    • Javier dice

      27 mayo, 2020 a las 14:47

      Hola, mírate la función difftime https://estadisticamente.com/extraer-fecha-r-ano-mes-dia/

      Responder
  10. Evangelina dice

    6 junio, 2020 a las 02:36

    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

    Responder
    • Javier dice

      8 junio, 2020 a las 10:53

      Hola Evangelina!!

      Simplemente tienes que poner el formato sin día:
      as.Date(fecha,'%m/%Y')

      Saludos!

      Responder
      • Anónimo dice

        24 enero, 2023 a las 15:38

        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.

        Responder
  11. Adriana dice

    10 junio, 2020 a las 17:37

    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.

    Responder
    • Javier dice

      15 junio, 2020 a las 09:14

      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!

      Responder
  12. Katheryn Sarahi dice

    14 junio, 2020 a las 23:48

    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

    Responder
    • Javier dice

      15 junio, 2020 a las 08:52

      ¿Estás usando el as.date cuando creas ese campo?

      Responder
      • Julia Farías dice

        4 noviembre, 2020 a las 04:40

        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.

        Responder
        • Javier Mendoza dice

          16 enero, 2023 a las 13:07

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

          Responder
  13. Franklin Chiluisa dice

    17 junio, 2020 a las 03:52

    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

    Responder
    • Javier Mendoza dice

      16 enero, 2023 a las 13:28

      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)

      Responder
  14. Franklin chiluisa dice

    18 junio, 2020 a las 04:03

    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

    Responder
    • Javier dice

      18 junio, 2020 a las 14:57

      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/

      Responder
  15. Paloma dice

    27 junio, 2020 a las 14:43

    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

    Responder
    • Javier dice

      27 junio, 2020 a las 21:45

      Buenas!!

      ¿No te funciona el apartado «Operaciones con fechas en R»?

      Responder
  16. Gabriela Cardenas dice

    4 julio, 2020 a las 15:30

    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¡

    Responder
    • Javier dice

      9 julio, 2020 a las 10:04

      No te funciona el as.Date ?

      Responder
  17. Eilyn dice

    9 julio, 2020 a las 05:29

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

    Responder
    • Javier dice

      9 julio, 2020 a las 10:04

      Puedes resolverlo con un if/else

      Responder
  18. Rafael dice

    10 julio, 2020 a las 07:47

    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

    Responder
  19. Alejandra Cortés dice

    6 agosto, 2020 a las 05:14

    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!

    Responder
    • Javier dice

      9 septiembre, 2020 a las 11:58

      Te quedan en 366 días los años bisiestos, ¿no? Es lo correcto…

      Responder
  20. Gabriela Cardona dice

    9 septiembre, 2020 a las 01:49

    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

    Responder
    • Javier dice

      9 septiembre, 2020 a las 12:02

      ¿Y qué problema te estás encontrando? En principio debería ser suficiente con restar una columna a la otra y ya está!!

      Responder
  21. Maria dice

    30 noviembre, 2020 a las 17:15

    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

    Responder
  22. Jenny dice

    3 diciembre, 2020 a las 23:10

    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

    Responder
    • Javier dice

      4 diciembre, 2020 a las 12:33

      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.

      Responder
  23. Oswaldo dice

    12 diciembre, 2020 a las 00:42

    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.

    Responder
  24. Maleya dice

    7 marzo, 2021 a las 16:18

    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

    Responder
  25. carlos arteta dice

    11 abril, 2021 a las 11:32

    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

    Responder
  26. Bastián dice

    17 abril, 2021 a las 02:07

    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?

    Responder
  27. Mencía dice

    29 mayo, 2021 a las 16: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!

    Responder
  28. Cesar dice

    14 junio, 2021 a las 19:24

    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.

    Responder
    • Anónimo dice

      24 agosto, 2022 a las 06:38

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

      Responder
  29. Nicolas dice

    16 junio, 2021 a las 14:50

    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

    Responder
    • Javier Mendoza dice

      9 enero, 2023 a las 16:27

      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)

      Responder
  30. Daniela dice

    28 julio, 2021 a las 01:07

    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

    Responder
    • Javier Mendoza dice

      9 enero, 2023 a las 16:29

      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)

      Responder
  31. Johanna dice

    12 agosto, 2021 a las 10:21

    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.

    Responder
    • Javier Mendoza dice

      4 marzo, 2023 a las 19:25

      ¡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

      Responder
  32. Raymond. dice

    24 enero, 2022 a las 18:07

    Hola,

    ¿cómo podría poner una fecha en formato YYYYMM?

    Gracias.

    Responder
    • Javier Mendoza dice

      16 enero, 2023 a las 12:42

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

      Responder
  33. Franklin dice

    25 junio, 2022 a las 21:05

    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

    Responder
    • Javier Mendoza dice

      9 enero, 2023 a las 16:31

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

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

      Responder
  34. Leonardo dice

    22 julio, 2022 a las 17:20

    Hola Javier,
    tengo solo una columna con el nombre del Mes, como hago para darle el formato de fecha?

    gracias

    Responder
    • Anónimo dice

      14 enero, 2023 a las 17:07

      Tengo la misma pregunta

      Responder
    • Javier Mendoza dice

      16 enero, 2023 a las 12:36

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

      Responder
  35. Hector dice

    24 julio, 2022 a las 04:04

    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

    Responder
    • Javier Mendoza dice

      16 enero, 2023 a las 13:14

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

      Responder
  36. joaquin dice

    12 septiembre, 2022 a las 22:04

    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

    Responder
    • Javier Mendoza dice

      9 enero, 2023 a las 16:34

      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)

      Responder
  37. Rodrigo H. dice

    16 enero, 2023 a las 18:48

    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

    Responder
    • Javier Mendoza dice

      16 enero, 2023 a las 19:23

      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)

      Responder
  38. Luis Alejandro dice

    14 febrero, 2023 a las 19:59

    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
    • Luis Alejandro dice

      15 febrero, 2023 a las 00:43

      Ya pude :). Se puede hacer así:

      E[xts:::startof(E, «months»)]

      E es el nombre de la variable :))))))

      Responder
  39. Anónimo dice

    3 marzo, 2023 a las 03:50

    Hola, como puedo fijar el año, al momento de correr codigo me pone varios años que no tienen nada que ver.

    Responder
    • Javier Mendoza dice

      4 marzo, 2023 a las 19:29

      No entiendo tu duda… pon un ejemplo

      Responder

Deja una respuesta Cancelar la respuesta

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

· Javi Mendoza © 2025 ·