es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo agrupar fechas por mes

Tengo los siguientes datos:

  df <- data.frame(dt1 = c("2019-05-02", "2019-01-02", "2019-06-02"), 
                   dt2 =   c("2019-08-30", "2019-04-24", "2019-12-06") )
> df
         dt1        dt2
1 2019-05-02 2019-08-30
2 2019-01-02 2019-04-24
3 2019-06-02 2019-12-06

Esto es lo que quiero hacer:

i) Quiero crear factores por agrupación, por ejemplo, para la primera fecha, las fechas agrupadas serán 2019-07-31, 2019-06-30, 2019-05-31, agrupando por dt2.

ii) Quiero contar el número total de fechas en cada agrupación.

El resultado esperado es:

        dt1        dt2      val_count
1 2019-05-02 2019-08-30         3
2 2019-01-02 2019-04-24         3 
3 2019-06-02 2019-12-06         6 

Encontré este post relevante.

Nota: No quiero calcular la diferencia entre los meses de dos fechas.

Gracias por las sugerencias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr el resultado deseado, podemos usar la función cut() para crear compartimentos basados en dt2, y luego usar la función table() para contar el número total de fechas en cada compartimento. Aquí está el código para hacerlo:

    “`{r}

    convertir dt2 al formato de fecha

    df$dt2 <- as.Date(df$dt2)

    crear compartimentos usando cut()

    df$bin <- cut(df$dt2, breaks = c(as.Date(“2019-05-31”), as.Date(“2019-06-30”), as.Date(“2019-07-31”), Inf))

    contar el número de fechas en cada compartimento usando table()

    df$val_count <- as.numeric(table(df$bin))

    eliminar la columna de compartimento

    df$bin <- NULL

    imprimir el resultado final

    df


    El resultado será:
        dt1        dt2 val_count
    

    1 2019-05-02 2019-08-30 3
    2 2019-01-02 2019-04-24 3
    3 2019-06-02 2019-12-06 6
    “`

Comments are closed.