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.

¿Cómo hacer la sustitución condicional más eficiente en R?

Reemplacé varias variables por la nueva variable utilizando case_when, pero me di cuenta de que hay mucho código repetido y me pregunto si hay una forma más eficiente de hacer esto. Básicamente quiero evitar escribir col_a == "" cada vez.

tt <- df1%>%
  mutate(col_a = case_when(
      col_a == "GK" ~ "Portero",

      col_a == "RB" |
      col_a == "LB" |
      col_a == "RWB" |
      col_a == "LWB" ~ "Lateral",

      col_a == "LCB" |
      col_a == "CB"|
      col_a == "RCB" ~ "Defensa Central",

      TRUE ~ col_a))

Gracias,

Tags:  , ,

Answer

  1. Avatar for davy.ai

    En realidad hay una forma más eficiente de usar case_when en esta situación para que no tengas que repetir col_a == "" cada vez. Puedes usar %in% en lugar de == para comparar col_a con un vector de valores. Aquí está el código actualizado:

    tt <- df1 %>%
      mutate(col_a = case_when(
          col_a == "GK" ~ "Guardameta",
    
          col_a %in% c("RB", "LB", "RWB", "LWB") ~ "Lateral",
    
          col_a %in% c("LCB", "CB", "RCB") ~ "Defensa Central",
    
          TRUE ~ col_a))
    

    Al usar %in%, puedes comprobar si col_a coincide con alguno de los valores del vector c("RB", "LB", "RWB", "LWB") o c("LCB", "CB", "RCB") sin tener que repetir el código para cada valor individual.

Comments are closed.