Dire che ho due colonne di nomi. Tutti i nomi nella prima colonna sono nella seconda colonna, ma in ordine casuale, E alcuni di loro non sono corrispondenze perfette. Quindi forse in una colonna c'è il nome John Smith e nel secondo John_smith o JonSmith. Esiste un modo abbastanza semplice per eseguire una "migliore corrispondenza"?Corrispondenza stringa imperfetta
risposta
dato alcuni dati in questo modo:
df<-data.frame(x=c('john doe','john smith','sally struthers'),y=c('John Smith','John_smith','JonSmith'))
si può ottenere una lunga strada con un paio di gsub
s e tolower
:
df$y.fix <- gsub('[[:punct:]]', ' ', df$y)
df$y.fix <- gsub(' ', '', df$y.fix)
df$y.fix <- tolower(df$y.fix)
df$x.fix <- tolower(gsub(' ', '', df$x))
Poi agrep
è ciò che si vorrà:
> agrep(df$x.fix[2], df$y.fix)
[1] 1 2 3
per stringhe di confusione più complesse, vedere this post from last week.
Sei stato un po 'più avanti di me. –
Joris, la cavalleria non è morta. –
+1 per 'tolower()' e 'gsub()' qualcosa che verrebbe sovradimensionato nelle distanze di levenshtein. –
- 1. Stringa corrispondenza esatta
- 2. Corrispondenza stringa Regex?
- 3. corrispondenza stringa approssimativa mongodb
- 4. ndb Ricerca corrispondenza stringa parziale
- 5. Enum e stringa di corrispondenza
- 6. corrispondenza stringa di ruby ignora la custodia
- 7. Metodo di corrispondenza/iterazione stringa più veloce?
- 8. Corrispondenza matrice PHP contro stringa parziale
- 9. Corrispondenza rapida stringa parziale in R
- 10. Problema di corrispondenza del modello di stringa
- 11. C# trova corrispondenza esatta nella stringa
- 12. Algoritmi di corrispondenza stringa ad alta velocità
- 13. Numero di corrispondenza alla fine della stringa
- 14. Uso COME = contro per corrispondenza esatta stringa
- 15. Modifica stringa char in corrispondenza dell'indice X
- 16. Espressione regolare Android - stringa con corrispondenza restituita
- 17. mysql stringa di corrispondenza con inizio stringa nella tabella
- 18. Jquery Autocomplete corrispondenza più parole non ordinate in una stringa
- 19. Corrispondenza stringa con Regex purché non sia racchiusa tra parentesi
- 20. Sequenze di corrispondenza di caratteri consecutivi in una stringa
- 21. Corrispondenza con un'espressione regolare con una stringa (nome file)
- 22. Corrispondenza espressione regolare Java per hh: mm: ss in stringa
- 23. corrispondenza di una stringa con varie possibilità usando grep
- 24. corrispondenza di espressione regolare C# a indice specifico nella stringa?
- 25. Eclipse: ricerca con la stringa di corrispondenza esatta
- 26. Corrispondenza del motivo all'inizio di una stringa in f #
- 27. Corrispondenza dell'espressione regolare Javascript sulla stringa seguita dal numero?
- 28. Scegliere la corrispondenza esatta cifra da una stringa
- 29. corrispondenza intera stringa con i trattini in elasticsearch
- 30. Regex per sostituire la stringa esatta di corrispondenza
Se si dispone di più colonne oltre al solo nome e cognome (ad esempio, si dispone anche di data di nascita e indirizzo, o qualsiasi altra cosa) e si desidera trovare le righe che possono essere corrispondenti, consultare il pacchetto 'RecordLinkage'. http://cran.r-project.org/web/packages/RecordLinkage/index.html –