Chaîne d'animaux partielle correspondant à R
J'ai un dataframe,
d<-data.frame(name=c("brown cat", "blue cat", "big lion", "tall tiger",
"black panther", "short cat", "red bird",
"short bird stuffed", "big eagle", "bad sparrow",
"dog fish", "head dog", "brown yorkie",
"lab short bulldog"), label=1:14)
J'aimerais à la recherche de la name
colonne et si les mots
le "chat", "lion", "tiger", et "panther" apparaissent, je veux attribuer la chaîne de caractères feline
à une nouvelle colonne et de la ligne correspondante species
.
Si les mots "bird", "eagle", and "sparrow"
apparaissent, je veux attribuer la chaîne de caractères avian
à une nouvelle colonne et de la ligne correspondante species
.
Si les mots "chien", "yorkie", et "bulldog" apparaissent, je veux attribuer la chaîne de caractères canine
à une nouvelle colonne et de la ligne correspondante species
.
Idéalement, j'aimerais cela stocker dans une liste ou quelque chose de similaire que je peux garder au début du script, parce que de nouvelles variantes de l'espèce apparaître dans le nom de la catégorie, il serait agréable d'avoir un accès facile à mettre à jour ce qui est considéré comme un feline
avian
et canine
.
Cette question est presque la réponse ici (Comment créer une nouvelle colonne dans dataframe basé sur une partie de la chaîne correspondant à d'autres de la colonne dans la R), mais il n'a pas d'adresse le nom multiple de torsion qui est présent dans ce problème.
source d'informationauteur testname123
Vous devez vous connecter pour publier un commentaire.
Il y a peut être une solution plus élégante que cela, mais vous pouvez utiliser
grep
avec|
pour spécifier d'autres matchs.J'ai supposé que tu voulais dire "aviaire", et à gauche "bulldog", car il contient du "chien".
Vous voudrez peut-être ajouter
ignore.case = TRUE
de la commande grep.de sortie:
Un élégant-ish façon de le faire (je dis élégant-ish, car, alors que c'est la façon la plus élégante, je sais, ce n'est pas grand) quelque chose comme:
L'avantage de cette méthode sont plusieurs fois
Le seul inconvénient - et cela s'applique, je pense, la plupart des solutions, vous êtes susceptible d'obtenir, c'est que si quelque chose correspond à de nombreux modèles, le dernier modèle dans la liste, il matches de son "espèce" tag.