Je dispose de plusieurs bases de données d'approvisionnement sur lesquelles je dois exécuter une liste de "mots-clés" que j'ai construite pour identifier certains produits et, en cas de correspondance, j'aimerais classer les produits dans une catégorie chirurgicale.
Voici un exemple.
Base de données des marchés publics (en fait, j'ai plus de 2 000 000 de lignes à parcourir) :
d<-data.frame(prod_desc=c("BANDELETTE TVTO-OBTRYX HALO", "BANDELETTE MINI ARC PRECISES", "BANDELETTE D'ANALYSE POUR GLYCEMIE", "DIACH. BANDELETTE STER 19MM X 72MM","SLING MALE SYSTEM","DIACHILON","AIGUILLE","GANT","LABEL","CRAYON"),label=1:10)
Liste de mots-clés et valeur de retour (liste réelle beaucoup plus longue) :
kw<-data.frame(kw=c("bandelette","tvt","bande transvaginale","sling system","argus"),category="ss_bandelette")
Je voudrais trouver les produits prod_desc
qui contient ma chaîne de mots-clés kw
et s'il y a une concordance, je voudrais ajouter une colonne dans le fichier d
qui renverrait le category
associé à la kw
dans le kw
cadre de données.
Pour l'instant, j'ai pu obtenir le résultat souhaité en utilisant le code suivant :
d$match <- ifelse(d$cat <- grepl(paste(kw$kw,collapse="|"), d$name,ignore.case = TRUE) == "TRUE","SS_Bandelette","-")
Mais ce code n'est pas vraiment efficace car j'ai environ 350 mots-clés qui sont associés à environ 30 catégories différentes. Quel code puis-je utiliser pour renvoyer automatiquement la catégorie dans le champ d
le cadre de données si l'un de mes mots-clés est déclenché ?
Merci beaucoup pour votre aide.
Phil