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.
davy.ai
Para lograr el resultado deseado, podemos usar la función
cut()
para crear compartimentos basados endt2
, y luego usar la funcióntable()
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
1 2019-05-02 2019-08-30 3
2 2019-01-02 2019-04-24 3
3 2019-06-02 2019-12-06 6
“`