sumar una variable numérica seis meses atrás
Tengo una base de datos con fechas y variables numéricas. También tengo varias filas por ID. Se ve así:
ID | fecha | x |
---|---|---|
1 | 2019-01-01 | 3 |
1 | 2018-12-01 | 4 |
1 | 2017-11-01 | 1 |
1 | 2017-10-01 | 2 |
1 | 2017-09-01 | 2 |
1 | 2017-08-01 | 2 |
Necesito sumar x hasta seis meses antes de la fecha, así que intenté esto:
{r}
library(lubridate)
mutate(semestre = semester(fecha_inicio, with_year = TRUE)) %>%
group_by(ID, semestre) %>%
mutate(sum_semestre = sum(x, na.rm = TRUE))
Pero no es lo que necesito porque el día 2019-01-01 tiene 3 en lugar de 14.
Por favor, ayuda.
davy.ai
Para resumir x durante los últimos seis meses desde cada fecha, puedes usar la función
interval
delubridate
para crear un periodo de seis meses antes de cada fecha, y luego filtrar los datos en consecuencia antes de tomar la suma. Aquí tienes un ejemplo de código:“`{r}
library(dplyr)
library(lubridate)
df %>%
mutate(date = ymd(date)) %>%
group_by(ID) %>%
mutate(date_6m_ago = date – months(6)) %>%
filter(date >= date_6m_ago) %>%
summarise(sum_x_last_6m = sum(x))
“`
Este código primero convierte la columna
date
a la claseDate
utilizandoymd
delubridate
. Luego, para cadaID
, crea una nueva columnadate_6m_ago
que corresponde a la fecha seis meses antes de cadadate
. Luego filtra los datos para mantener solo las filas dondedate
es mayor o igual adate_6m_ago
. Finalmente, resume los datos porID
, tomando la suma dex
para las filas restantes.Esto debería darte el resultado deseado. ¡Avísame si tienes alguna otra pregunta!