2017-10-19 6 views
1

J'ai une image avec une colonne avec les noms de pays. Ces noms sont écrits différemment même quand ils sont dans le même pays par exemple, il y a des différences dans les cas du bas, des lettres manquantes, des lettres supplémentaires et des fils. J'ai donc besoin de les regrouper dans des modèles similaires. Par exemple, j'ai deux observations qui appartiennent à la même catégorie: ("Brésil", "Brésil") que j'ai besoin de mettre ensemble. Je ne peux pas le faire à la main car l'ensemble de la base de données est composée de ~ 10 000 observations. Après avoir fait ces observations qui sont similaires dans une catégorie, j'ai besoin de faire quelques sous-ensembles de ces catégories.Regroupement de variables de chaîne à partir d'une image par meilleure correspondance de chaîne pour créer des sous-ensembles

Existe-t-il une solution possible pour regrouper ces noms similaires dans une catégorie, puis créer des sous-ensembles avec ces catégories avec les autres colonnes de la base de données? J'essayais d'utiliser la fonction agrep sans succès.

number <- c(1:6) 
country <- c("Brasil","brazil","Costa Rica","costarrica","suiza","Holanda") 
example <- data.frame(number,country) 

agrupamiento <- for (i in 1:nrow(example)){ 
    agrep(example$country[i], example$country, 
    max.distance = 0.1,ignore.case = TRUE) 
} 
+0

Voir ma démarche, si elle est ce que vous avez besoin, vous pouvez l'accepter – Wen

Répondre

1

Travailler pour vous des exemples de données définies à l'aide stringdist::phonetic

library(stringdist) 
example$ph=phonetic(example$country) 
example 
    number country ph 
1  1  Brasil B624 
2  2  brazil B624 
3  3 Costa Rica C236 
4  4 costarrica C236 
5  5  suiza S200 
6  6 Holanda H453 

Ensuite, il nous séparons

out <- split(example,f = example$ph) 
out 
$B624 
    number country ph 
1  1 Brasil B624 
2  2 brazil B624 

$C236 
    number country ph 
3  3 Costa Rica C236 
4  4 costarrica C236 

$H453 
    number country ph 
6  6 Holanda H453 

$S200 
    number country ph 
5  5 suiza S200