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.

Necesito una solución para recodificar una gran cantidad de variables.

Tengo un conjunto de datos con la versión en inglés y en español de un cuestionario. Los cuestionarios preguntan si las personas han recibido alguna vez un gran número de diferentes diagnósticos. Cada variable tiene la forma prev_dx_major_depression para los datos en inglés y prev_dx_major_depression_span para los datos en español.

Me gustaría combinar ambas en una sola variable. Actualmente estoy utilizando el siguiente código para lograr este propósito:


mutate(
prev_dx_major_depression = if_else(prev_dx_major_depression == 1 |
prev_dx_major_depression_span == 1,
1, 0
))

Sin embargo, sé que esto es altamente ineficiente para una gran cantidad de variables. Mi intuición es que necesitaré utilizar alguna combinación de mutate_at, recode, starts_with y ends_with. Sin embargo, estoy un poco estancado en este punto y no estoy seguro de cómo hacer coincidir las variables correspondientes entre sí.

Aquí hay algunos datos de muestra:


sample_data <-
structure(
list(
id = 1:5,
prev_dx_major_depression = c(0, 1, 1,
0, 0),
prev_dx_bipolar = c(0, 0, 0, 0, 0),
prev_dx_generalized_anxiety = c(1,
1, 0, 0, 0),
prev_dx_major_depression_span = c(NA, NA, NA, NA,
1),
prev_dx_bipolar_span = c(NA, NA, NA, NA, NA),
prev_dx_generalized_anxiety_span = c(NA,
NA, NA, NA, 1)
),
class = "data.frame",
row.names = c(NA,-5L)
)

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para combinar las versiones en inglés y español de las variables del cuestionario, se pueden utilizar las funciones mutate_at y ends_with de tidyr. Aquí se muestra cómo hacerlo:

    “`{r}
    library(tidyr)

    combined_data <- sample_data %>%
    mutate_at(vars(ends_with(“_major_depression”)),
    funs(if_else(. == 1 |
    get(paste0(str_replace(., “_major_depression”, “_major_depression_span”))) == 1,
    1, 0))) %>%
    rename_with(fun = ~ str_replace(., “_major_depression$”, “_combined”))

    “`

    Aquí, primero usamos mutate_at para especificar las variables que queremos combinar usando ends_with("_major_depression") y aplicamos una función a ellas. Usamos if_else para crear una nueva variable con los valores combinados, utilizando get para recuperar la correspondiente variable en español dinámicamente basada en el nombre de la variable en inglés.

    Luego, renombramos la nueva variable usando rename_with y str_replace para eliminar el sufijo “_major_depression” y reemplazarlo con “_combined”. El dataframe resultante, combined_data, tendrá las variables recién creadas con las respuestas en inglés y español combinadas.

    Tenga en cuenta que se usó la función str_replace de la librería stringr, que forma parte del paquete tidyverse. Por lo tanto, es necesario cargar la librería tidyverse antes de ejecutar el código anterior.

Comments are closed.