Comparar cadenas

Limpieza de datos en R

Maggie Matsui

Content Developer @ DataCamp

Medir la distancia entre valores

Una recta numérica de 0 a 15 con un punto en 3 y otro en 10.

Limpieza de datos en R

Medir la distancia entre valores

La misma recta numérica con un corchete rojo que marca la longitud entre los puntos en 3 y 10.

Limpieza de datos en R

Medir la distancia entre valores

Bajo la línea roja que muestra la distancia, 10 menos 3 igual a 7.

                                            ¿Cuál es la distancia entre typhoon y baboon?

Limpieza de datos en R

Distancia de edición mínima

¿Cuántos fallos de tecleo hacen falta para pasar de una cadena a otra?

Signo verde de suma para inserción.

Limpieza de datos en R

Distancia de edición mínima

¿Cuántos fallos de tecleo hacen falta para pasar de una cadena a otra?

Signo rojo de menos para eliminación

Limpieza de datos en R

Distancia de edición mínima

¿Cuántos fallos de tecleo hacen falta para pasar de una cadena a otra?

Símbolo morado de ciclo para sustitución.

Limpieza de datos en R

Distancia de edición mínima

¿Cuántos fallos de tecleo hacen falta para pasar de una cadena a otra?

Doble flecha azul para transposición.

Limpieza de datos en R

Distancia de edición = 1

Diferencia entre dog y dogs con un signo verde de suma.

Limpieza de datos en R

Distancia de edición = 1

Diferencia entre bath y bat con un signo rojo de menos.

Limpieza de datos en R

Distancia de edición = 1

Diferencia entre cats y rats con un símbolo morado de ciclo.

Limpieza de datos en R

Distancia de edición = 1

Diferencia entre sign y sign con una doble flecha azul.

Limpieza de datos en R

Un ejemplo más complejo

baboon $\rightarrow$ typhoon

la palabra baboon

Limpieza de datos en R

Un ejemplo más complejo

baboon $\rightarrow$ typhoon
  • Insertar h

Debajo de baboon, la palabra babhoon con un signo verde de suma sobre la h.

Limpieza de datos en R

Un ejemplo más complejo

baboon $\rightarrow$ typhoon
  • Insertar h
  • Sustituir b $\rightarrow$ t

Debajo, la palabra tabhoon, con un símbolo morado de ciclo sobre la t

Limpieza de datos en R

Un ejemplo más complejo

baboon $\rightarrow$ typhoon
  • Insertar h
  • Sustituir b $\rightarrow$ t
  • Sustituir a $\rightarrow$ y

Debajo, la palabra tybhoon con un símbolo morado de ciclo sobre la y.

Limpieza de datos en R

Un ejemplo más complejo

baboon $\rightarrow$ typhoon
  • Insertar h
  • Sustituir b $\rightarrow$ t
  • Sustituir a $\rightarrow$ y
  • Sustituir b $\rightarrow$ p

Total: 4

Debajo, la palabra typhoon con un símbolo morado de ciclo sobre la p.

Limpieza de datos en R

Tipos de distancia de edición

  • Damerau-Levenshtein
    • Lo que acabas de aprender
  • Levenshtein
    • Considera solo sustitución, inserción y eliminación
  • LCS (Longest Common Subsequence)
    • Considera solo inserción y eliminación
  • Otros
    • Jaro-Winkler
    • Jaccard

¿Cuál es mejor?

Limpieza de datos en R

Distancia de cadenas en R

library(stringdist)
stringdist("baboon", 
           "typhoon",
           method = "dl")
4

Imagen de las diapositivas anteriores que muestra cómo pasar de baboon a typhoon.

Limpieza de datos en R

Otros métodos

# LCS
stringdist("baboon", "typhoon",
           method = "lcs")
7
# Jaccard
stringdist("baboon", "typhoon",
           method = "jaccard")
0.75
Limpieza de datos en R

Comparar cadenas para limpiar datos

  • En el capítulo 2:
    • "EU", "eur", "Europ" $\rightarrow$ "Europe"
  • ¿Y si hay demasiadas variantes?
    • "EU", "eur", "Europ", "Europa", "Erope", "Evropa", ... $\rightarrow$ "Europe"?
    • ¡Usa la distancia de cadenas!
Limpieza de datos en R

Comparar cadenas para limpiar datos

survey
          city move_score
1       chicgo          4
2   los angles          4
3      chicogo          5
4      new yrk          5
5    new yoork          2
6     seatttle          3
7   losangeles          4
8      seeatle          2
...
cities
         city
1    new york
2     chicago
3 los angeles
4     seattle
Limpieza de datos en R

Remapeo usando distancia de cadenas

library(fuzzyjoin)
stringdist_left_join(survey, cities, by = "city", method = "dl")
        city.x move_score      city.y
1       chicgo          4     chicago
2   los angles          4 los angeles
3      chicogo          5     chicago
4      new yrk          5    new york
5    new yoork          2    new york
6     seatttle          3     seattle
7   losangeles          4 los angeles
8      seeatle          2     seattle
9      siattle          1     seattle
...
Limpieza de datos en R

Remapeo usando distancia de cadenas

stringdist_left_join(survey, cities, by = "city", method = "dl", max_dist = 1)
        city.x move_score      city.y
1       chicgo          4     chicago
2   los angles          4 los angeles
3      chicogo          5     chicago
4      new yrk          5    new york
5    new yoork          2    new york
6     seatttle          3     seattle
7   losangeles          4 los angeles
8      seeatle          2        <NA>
9      siattle          1     seattle
...
Limpieza de datos en R

¡Vamos a practicar!

Limpieza de datos en R

Preparing Video For Download...