Cómo crear una nueva columna que especifique a qué rango de años pertenece una fecha (como el año académico)?
En algunos casos, un “año” no necesariamente comienza el 1 de enero. Por ejemplo, el año académico comienza a finales de agosto en los Estados Unidos. Otro ejemplo es la temporada de la NBA.
Mi pregunta: dados datos que contienen una columna de fechas, quiero crear otra columna que haga referencia a qué período pertenece. Por ejemplo, consideremos que se nos da el siguiente tib
:
library(lubridate, warn.conflicts = FALSE)
library(tibble)
tib <- tibble(my_dates = as_date(c("1999-01-01", "2010-08-09", "2010-09-02", "1995-03-02")))
tib
Deseamos añadir una columna que se refiera al año académico al que pertenece cada fecha, siempre y cuando el año académico comience el 31 de agosto:
desired_output <-
tib %>%
mutate(belongs_to_school_year = c("1998-1999", "2009-2010", "2010-2011", "1994-1995"))
desired_output
davy.ai
Para crear la columna
belongs_to_school_year
basada enmy_dates
, podemos usarmutate()
del paquetedplyr
y la funciónif_else()
dedplyr
o la funciónifelse()
de R base para verificar si el mes y el día de cada fecha están antes o después del inicio del año académico (31 de agosto).Aquí está el código:
En este código, primero creamos una columna
year_start
que almacena el año de inicio del año académico basado en la columnamy_dates
. Usamosif_else()
para verificar si el mes de cada fecha es anterior a septiembre o si es septiembre pero anterior al 1 de septiembre. Si alguna de estas condiciones es verdadera, restamos 1 al año de la fecha para obtener el inicio del año académico.Luego, creamos una columna
year_end
sumando 1 a la columnayear_start
.Finalmente, creamos la columna
belongs_to_school_year
pegando juntas las columnasyear_start
yyear_end
con un separador “-“, y eliminamos las columnasyear_start
yyear_end
usandoselect()
. El resultado es el resultado deseado:En este ejemplo, dado que el año académico comienza el 31 de agosto, cualquier fecha anterior a esa en un año determinado pertenece al año académico anterior. Por lo tanto, la fecha 2010-08-09 pertenece al año académico 2010-2011, mientras que la fecha 2010-09-02 pertenece al mismo año académico, pero el nombre del año académico en sí es diferente (ya que comienza en septiembre).