2017-10-16 1 views
-1

J'essaie d'utiliser R pour certaines analyses de texte de base.Supprimer des expressions spécifiques d'une chaîne

J'ai une colonne contenant un type de données complexe. Je souhaite conserver un tableau séparé que je peux utiliser pour supprimer certaines phrases de la première colonne de données.

J'ai essayé gsubfn mais sans succès.

Par exemple

dirtydata <- c("JOHN COURT","@PETER","BOB 22","RUPERT BODY CORPORATE") 
removefields <-c("COURT","BODY CORPORATE") 

Pourquoi

x <- gsubfn(removefields,"",dirtydata) 

fonctionne pas?

Espérant une sortie

c("JOHN ","@PETER","BOB 22","RUPERT ") 
+0

Veuillez inclure le nom des paquets supplémentaires chargés. mais vous pouvez essayer 'gsub (coller (removefields, collapse =" | ")," ", dirtydata)' – Jimbou

+0

Copie possible de [Comment remplacer plusieurs chaînes avec le même en R] (https://stackoverflow.com/questions/28285480/comment-remplacer-plusieurs-chaînes-avec-le-même-dans-r) ou [celui-ci] (https://stackoverflow.com/questions/24645390/r-remove-multiple-text-strings -in-data-frame) – Jimbou

Répondre

0

S'il vous plaît trouver le code ci-dessous modifiées à l'aide base fonctions de R

dirtydata <- c("JOHN COURT","@PETER","BOB 22","RUPERT BODY CORPORATE") 
removefields <-c("COURT","BODY CORPORATE") 
pastedFields = paste0(removefields,collapse = "|") 
gsub(pastedFields,"",dirtydata) 
+0

Pouvez-vous l'élaborer plus? Je suppose que vous obtenez le résultat dans le format de liste vous exceptant le vecteur? Si oui, veuillez mettre la ligne de code où vous l'avez appliqué dans la colonne de vos données –

0

essayer.

dirtydata <- c("JOHN COURT","@PETER","BOB 22","RUPERT BODY CORPORATE") 
removefields <-c("COURT | BODY CORPORATE") 
x <- gsub(removefields, "", dirtydata) 
0

Ceci généralise pour tout ce que vous mettez dans removefields et efface les espaces blancs autour des chaînes à supprimer:

dirtydata <- c("JOHN COURT","@PETER","BOB 22","RUPERT BODY CORPORATE") 
removefields <- c("COURT","BODY CORPORATE") 
removefields <- paste0("\\s+", removefields, "\\s+", collapse = "|") 
x <- gsub(removefields, "", dirtydata) 
0

Nous pouvons utiliser tm package

dirtydata <- c("JOHN COURT","@PETER","BOB 22","RUPERT BODY CORPORATE") 
removefields <-c("COURT","BODY CORPORATE") 

library(tm) 
removeWords(dirtydata, removefields) 

> removeWords(dirtydata, removefields) 
[1] "JOHN " "@PETER" "BOB 22" "RUPERT "