Encuentra diferencias entre objetos de R con {waldo}

10/11/2025
limpieza de datos consejos datos perdidos

{waldo} es un paquete de R para encontrar diferencias entre objetos y conjuntos de datos.

Creemos dos vectores de datos de ejemplo:

vector_a <- c("a", "b", "c", "d", "e")
vector_b <- c("a", "b", "c", "f")

Si los comparamos con la función all.equal(), de R base, obtenemos un resultado poco informativo:

# comparar con base
all.equal(vector_a, vector_b)
[1] "Lengths (5, 4) differ (string compare on first 4)"
[2] "1 string mismatch"                                

Básicamente nos dice “son distintos” 🤨

Pero si usamos waldo::compare(), obtenemos una comparación ordenada y clara de las diferencias:

# comparar con waldo
waldo::compare(vector_a, vector_b)

Se nos informa con color de las diferencias en los datos.

Probemos con otro ejemplo simple de vectores similares:

vector_c <- c("a", "b", "c", "d")
vector_d <- c("d", "b", "c", "a")

waldo::compare(vector_c, vector_d)

La comparación destaca las diferencias de posición entre ambos vectores.

Desordenemos y ensuciemos un dataframe con ayuda del paquete {messy}, de Nicola Rennie, para compararlo con su versión original:

iris_b <- iris |> messy::messy()

compare(iris, iris_b)

Las diferencias son tantas que indica que las variables son de tipo distinto, y muestra sus primeras observaciones.

Hagamos otra verión sucia de iris para comparar ambos dataframe sucios:

iris_c <- iris |> messy::messy()

compare(head(iris_b), head(iris_c))

En este caso te muestra las filas de ambas tablas intercaladas, para que se vean las diferencias, y luego muestra las columnas con los primeros valores distintos.

Hagamos otro par de versiones sucias, pero ahora que sólo difieran en su cantidad de datos perdidos o missing:

iris_c <- iris |> messy::make_missing()
iris_d <- iris |> messy::make_missing()

compare(iris_c, iris_d)

En este caso, va destacando las diferencias entre ambos dataframes, indicando con color sus cambios y la cantidad extra de cambios que hay.

Para terminar, veamos un ejemplo más práctico: acá hay dos tablas de datos con muchas columnas, todas con nombres levemente distintos. Es una situación que pasa mucho cuando nos encontramos con datos cuyas columnas son solamente ids de variables que luego hay que ir a buscar a un diccionario de datos, y que por lo tanto tienen nombres muy parecidos 😣

var_ead32 var_efe23 var_eea31 var_edr52 var_ead30 var_eae31
0.9629587 0.186854 0.743411 0.1829925 0.3855037 0.0135598
var_ead32 var_efe23 var_eae31 var_ede52 var_ead30 var_eae30
0.2636705 0.3516496 0.8207743 0.4509701 0.3146321 0.1663455

Así a la rápida es casi imposible saber si las columnas son las mismas, o si no lo son, cuáles sobran y cuáles faltan! 😭

compare(tabla_a, tabla_b)

Así podemos ver claramente que hay tres columnas distintas entre ambas tablas, y cuáles son, en vez de partirnos la cabeza y los ojos comparando nombres de columnas 🤓

Fecha de publicación:
November 10, 2025
Extensión:
2 minute read, 422 words
Tags:
limpieza de datos consejos datos perdidos
Ver también:
Crea una carpeta inteligente con todos tus proyectos de R en Mac
Taller: Compartir y colaborar desde el cruce entre las ciencias de datos y las ciencias sociales
Contar datos perdidos en una o varias columnas