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 especificar los argumentos de función dentro de mutate_at

Quiero convertir múltiples columnas de un data.frame de la clase character a la clase factor mientras especifico las etiquetas del factor.

Primero crearé un data.frame de ejemplo con el cual el código debería funcionar para que otros puedan reproducir el problema de la siguiente manera:

df <- data.frame(replicate(2,sample(0:1,20,rep=TRUE)),
replicate(2,sample(0:2,20,rep=TRUE)))
names(df) <- c(“xxx_var1”, “xxx_var2”, “yyy_var1”, “yyy_var2”)

He conseguido convertir las columnas deseadas de la siguiente manera:

df <- df %>%
mutate_at(vars(starts_with(“xxx”)), factor)

Ahora quiero especificar argumentos en la función factor() pero no sé cómo. Si intento lo siguiente:

df <- df %>%
mutate_at(vars(starts_with(“xxx”)), factor(labels = c(“no”, “yes”))

Devuelve el siguiente error:

Error in factor(labels = c(“no”, “yes”)) :
invalid ‘labels’; length 2 should be 1 or 0

¿Es posible especificar las etiquetas del factor para todas estas columnas a la vez usando mutate_at?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible especificar las etiquetas de factor para todas estas columnas a la vez utilizando mutate_at. Puedes hacer esto pasando una función a la función mutate_at() que utiliza la función factor() con las etiquetas deseadas como argumento. Aquí hay un código de ejemplo:

    {r}
    df <- df %>%
    mutate_at(vars(starts_with("xxx")), function(x) factor(x, labels = c("no", "yes")))

    En este código, se llama a la función mutate_at() con las variables que comienzan con “xxx” como argumento. Se pasa una función como segundo argumento, que toma una variable (x) como argumento y aplica la función factor() con el argumento de etiquetas establecido en “no” y “yes”. El resultado es un data.frame con las etiquetas deseadas para las columnas especificadas en la clase de factor.

Comments are closed.