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 recodificar datos usando dplyr::recode cuando las variables tienen un espacio.

Tengo los siguientes documentos de TI para traducir. Por favor, no traduzcas el código y la salida en formato markdown.

Tengo

myColors <- c("red", "purple", "blue", "blue", "orange", "red", "orange")
library(dplyr)
recode(myColors, red="rot", blue="blau", purple="violett")

Sin embargo, si mis datos contienen espacios esto no funcionará

myColors <- c("Color red", "Color purple", "Color blue", "Color blue", "Color orange", "Color red", "Color orange")
recode(myColors, Color red="rot", Color blue="blau", Color purple="violett")

¿Hay algo que pueda hacer para solucionar esto sin cambiar los datos?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una solución para este problema. En lugar de utilizar recode(), puedes usar la función case_when() de dplyr. Aquí está el código:

    myColors <- c("Color rojo", "Color violeta", "Color azul", "Color azul", "Color naranja", "Color rojo", "Color naranja")
    library(dplyr)
    myColors %>%
      as_tibble() %>%
      mutate(new_color = case_when(
        stringr::str_detect(myColors, "Color rojo") ~ "rot",
        stringr::str_detect(myColors, "Color azul") ~ "blau",
        stringr::str_detect(myColors, "Color violeta") ~ "violett",
        TRUE ~ as.character(myColors)
      )) %>%
      pull(new_color)
    

    En este código, primero convertimos myColors en un tibble usando as_tibble(). Luego utilizamos mutate() para crear una nueva columna llamada new_color. Aplicamos la función case_when() a esta columna para recodificar los colores originales. stringr::str_detect() se utiliza para detectar los colores originales en el vector myColors. Si se detecta un color, se reemplaza con la traducción alemana correspondiente, de lo contrario se mantiene el color original.

    La respuesta final es un vector de colores recodificados.

Comments are closed.