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.

¿Existe una manera en R de agregar una columna para año que reconozca que ha habido un cambio de año?

Tengo una tabla que se parece a la siguiente en R. En noviembre de 2017, tengo valores pronosticados para las semanas objetivo de diciembre 50-53 y enero 1-4. Deseo agregar otra columna llamada target_year, que contenga el año para los valores pronosticados, como en la tabla debajo de la primera tabla. ¿Hay alguna forma en R de agregar el año correcto en la columna?

En el conjunto de datos real, estoy pronosticando 30 semanas de antelación y desde forecastaño= 2015-2020 y forecastmeses = 1:12.

Tengo:

target_week forecast_month forecast_year weekly_level
1 11 2017 0.011
2 11 2017 0.009
3 11 2017 0.011
4 11 2017 0.010
50 11 2017 0.005
51 11 2017 0.005
52 11 2017 0.007
53 11 2017 0.006

Deseo tener:

target_week target_year forecast_month forecast_year weekly_level
1 2018 11 2017 0.011
2 2018 11 2017 0.009
3 2018 11 2017 0.011
4 2018 11 2017 0.010
50 2017 11 2017 0.005
51 2017 11 2017 0.005
52 2017 11 2017 0.007
53 2017 11 2017 0.006
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de agregar el año correcto en la columna utilizando R. Puede crear una nueva columna llamada “target_year”, que estará llena del año de los valores pronosticados. Hay diferentes formas de hacer esto, pero una solución posible es:

    # convertir target_week a un formato de fecha
    df$target_date <- as.Date(paste0(df$target_year, "-01-01")) + (df$target_week - 1) * 7
    
    # agregar un año a target_date para las semanas 1-4
    df$target_date[df$target_week %in% 1:4] <- df$target_date[df$target_week %in% 1:4] + years(1)
    
    # extraer el año de target_date y asignarlo a target_year
    df$target_year <- year(df$target_date)
    
    # eliminar target_date
    df$target_date <- NULL
    

    Este código supone que target_week representa el número de semana en el año (por ejemplo, la semana 1 es la primera semana de enero), y que target_year representa el año en el que se hicieron los valores pronosticados (por ejemplo, noviembre de 2017). Utiliza el paquete “lubridate” para facilitar los cálculos de fechas.

    El código primero convierte target_week a un formato de fecha, asumiendo que el año objetivo comienza el 1 de enero. Luego agrega un año a target_date para las semanas 1-4 (que corresponden a enero del siguiente año), y extrae el año de target_date para asignarlo a target_year. Finalmente, elimina la columna target_date, que ya no es necesaria.

    Después de ejecutar este código, la tabla resultante debería tener una nueva columna llamada “target_year” que contiene el año de los valores pronosticados, como se muestra en la segunda tabla anterior.

Comments are closed.