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.

Crear una nueva variable con la condición OR para múltiples variables.

Actualmente estoy trabajando con un conjunto de datos de violencia de género. Tengo varias dimensiones, como la violencia física, sexual o psicológica, y varios indicadores para cada dimensión, cada uno con un conjunto de entre 6 y 10 indicadores. Además, tengo dos medidas de tiempo: dentro de los últimos 12 meses y antes de los últimos 12 meses. En resumen, al menos estoy trabajando con 70 indicadores.

Tengo que crear una variable “en algún momento de la vida” que indique si una mujer sufrió violencia en cualquier dimensión, en cualquier período de tiempo. Por lo tanto, si una mujer indica sí en cualquiera de los 70 indicadores, sufrió violencia en algún momento de su vida.

Mi pregunta es cómo puedo crear esa nueva variable más rápidamente, porque lo único que estoy pensando es algo como:

base <- base %>% mutate(newvariable= case_when(v1 == 1 | v2 == 1 | v3 == 1 ~ … 1))

Pero tengo 70 variables. Entonces, ¿puedo crear esta nueva variable con una condición o dentro de un rango de variables?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes crear la nueva variable utilizando un rango de variables en lugar de enumerar explícitamente cada variable en la instrucción case_when.

    Una opción es utilizar la función contains del paquete dplyr para seleccionar variables que contengan una cierta cadena, como “violencia”. Por ejemplo:

    {r}
    base <- base %>%
    mutate(algun_punto_en_la_vida = case_when(
    any_vars(contains("violencia") == 1) ~ 1,
    TRUE ~ 0
    ))

    Esto seleccionará todas las variables que contengan “violencia” en su nombre y comprobará si alguna de ellas tiene un valor de 1. Si es así, la nueva variable “algun_punto_en_la_vida” recibirá un valor de 1; de lo contrario, recibirá un valor de 0.

    Ten en cuenta que la función any_vars verifica si alguna de las variables seleccionadas cumple la condición (es decir, contiene “violencia” y tiene un valor de 1) y devuelve un vector de valores TRUE o FALSE. La instrucción case_when asigna entonces un valor de 1 o 0 en función de los valores TRUE o FALSE devueltos por any_vars.

    Este método debería ser más eficiente que enumerar las 70 variables en la instrucción case_when. Sin embargo, supone que todas las variables relacionadas con la violencia contienen la cadena “violencia” en su nombre. Si esto no es así, es posible que necesites utilizar un método diferente para seleccionar las variables relevantes.

Comments are closed.