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.

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.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para resumir x durante los últimos seis meses desde cada fecha, puedes usar la función interval de lubridate 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 clase Date utilizando ymd de lubridate. Luego, para cada ID, crea una nueva columna date_6m_ago que corresponde a la fecha seis meses antes de cada date. Luego filtra los datos para mantener solo las filas donde date es mayor o igual a date_6m_ago. Finalmente, resume los datos por ID, tomando la suma de x para las filas restantes.

    Esto debería darte el resultado deseado. ¡Avísame si tienes alguna otra pregunta!

Comments are closed.