2017-07-20 2 views
0

J'ai un vecteur d'une trame de données qui contient des éléments de chaîne/caractère, et je voudrais remplacer ces éléments de chaîne/caractère par des nombres selon qu'ils contiennent un certain groupe de caractères et je me demandais comment je pouvais y arriver. Par exemple, disons que j'ai une colonne d'une trame de données avec des éléments de chaîne comme suit:Remplacer des éléments de caractères dans un vecteur avec des nombres dans R

df$Stringvector <- c("aaca", "bbb", "edee", "ca bb" "ttt t", "ui de", "k jkl") 

Maintenant, ce que je voudrais faire est de remplacer les éléments du vecteur avec un 1 si les éléments ont le caractère ca ou de et remplacez les éléments par 2 s'ils ne contiennent aucune de ces combinaisons. Depuis le 1er, 3e, 4e et 6e éléments en df$Stringvector ont ca et de dans leurs cordes ceux-ci se remplacés par 1, alors que tous les autres se remplacés par 2 afin que nous obtenons maintenant:

df$Stringvector <- c(1,2,1,1,2,1,2) 

Qu'est-ce qu'un bon moyen de faire cela? Merci!

+0

Est-ce qu'une combinaison de 'ca' inclut' ca' et 'ac'? - c'est-à-dire dans n'importe quel ordre. – thelatemail

Répondre

3

Vous pouvez trouver le modèle en utilisant grepl.

> as.numeric(!grepl("ca|de", x)) + 1 
[1] 1 2 1 1 2 1 2 
+0

Merci! Cela semble fonctionner parfaitement :) – reallybadstatdude