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.

Resolución de problemas de la función case_when utilizando tidyverse en R

Pregunta sencilla, ¿qué no entiendo sobre cómo funciona case_when? En el ejemplo de abajo, esperaba tener 4 niveles en la variable season pero solo obtengo dos.

Gracias

data <- tibble(day = 1:366) %>% 
  mutate(
    season = case_when(
      day <= 60 | day > 335 ~ "invierno",
      day > 60  | day <= 151 ~ "primavera",
      day > 151 | day <= 242 ~ "verano",
      day > 242 | day <= 335 ~ "otoño"
    )
  )
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que la segunda condición para “spring” y la tercera condición para “summer” se superponen, lo que lleva a crear solo 3 niveles de “season” en lugar de los 4 esperados. Específicamente, en el día 151, tanto la segunda como la tercera condición son verdaderas, por lo que R asigna “spring” porque es la primera condición enumerada. Para solucionar esto, podemos ajustar las condiciones de la siguiente manera:

    data <- tibble(day = 1:366) %>%
      mutate(
        season = case_when(
          day <= 60 | day > 335 ~ "winter",
          day > 60 & day <= 151 ~ "spring",
          day > 151 & day <= 242 ~ "summer",
          day > 242 & day <= 335 ~ "autumn"
        )
      )
    

    Ahora, hay cuatro niveles distintos en “season”: “winter”, “spring”, “summer” y “autumn”.

Comments are closed.