¿Cómo reemplazar valores en una columna con valores de otra columna de otro conjunto de datos basado en una condición en R?
Tengo dos conjuntos de datos, cuyas muestras se muestran a continuación. Necesito reemplazar los nombres de proyectos en target_df$project_name
, en caso de que estén presentes en registry_df$to_change
, con los valores correspondientes en registry_df$replacement
. Sin embargo, el código que intenté, obviamente, no entregó ningún resultado. ¿Cómo se debe corregir o qué otra forma hay de lograr el objetivo deseado?
Conjuntos de datos:
target_df <- tibble::tribble(
~project_name, ~sum,<br>
"Mark", "4307",<br>
"Boat", "9567",<br>
"Delorean", "5344",<br>
"Parix", "1043",
)
registry_df <- tibble::tribble(
~to_change, ~replacement,<br>
"Mark", "Duck",<br>
"Boat", "Tank",<br>
"Toloune", "Bordeaux",<br>
"Hunge", "Juron",
)
Resultado deseado de target_df :
project_name sum
“Duck” “4307”
“Tank” “9567”
“Delorean” “5344”
“Parix” “1043”
Código:
library(data.table)
target_df <- transform(target_df,
project_name = ifelse(target_df$project_name %in% registry_df$to_change,
registry_df$replacement,
project_name
)
)
davy.ai
Hay un problema con la sintaxis de la función
ifelse()
en el código proporcionado. La sintaxis correcta es la siguiente:Este código reemplaza los valores en
target_df$project_name
con los valores correspondientes enregistry_df$replacement
si están presentes enregistry_df$to_change
. La funciónmatch()
se utiliza para encontrar los índices de los valores coincidentes enregistry_df$to_change
.