pb caractere generique ifelse

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Damien Eden
Messages : 19
Enregistré le : 21 Sep 2017, 09:56

pb caractere generique ifelse

Messagepar Damien Eden » 23 Nov 2017, 15:00

Bonjour,
J'ai un tableau a partir duquel je souhaite créer une variable d’agrégation sur à partir de la variable Type dès lors qu'elle contient les caractères "Eco".

Code : Tout sélectionner

v1=c("A","B","C","D","E","F")
v2=c("Eco-contact","sans objet","Economie","cas autre","Ecologie","Autonomie")
liste=list(v1,v2)
dta=data.frame(liste)
 colnames(dta)<-c("Nom","type")
 
dta
Nom   type
A   Eco-contact
B   sans objet
C   Economie
D   cas autre
E   Ecologie
F   Autonomie

pour obtenir ceci

Code : Tout sélectionner

Nom   type         catégorie
A   Eco-contact   Eco
B   sans objet      Z
C   Economie      Eco
D   cas autre      Z
E   Ecologie      Eco
F   Autonomie      Z

J'ai utilisé ifelse, mais il ne reconnais pas le *

Code : Tout sélectionner

dta$categorie=with(dta, ifelse(type=="Eco*","Eco", "Z"))

Toutes les catégories sont à Z

Cordialement

Eric Casellas
Messages : 767
Enregistré le : 06 Jan 2009, 14:59

Re: pb caractere generique ifelse

Messagepar Eric Casellas » 23 Nov 2017, 15:40

Bonjour,

Il y a les fonctions du type grep pour faire des recherches avec des expression régulières

Code : Tout sélectionner

?grep


Code : Tout sélectionner

v2=c("Eco-contact","sans objet","Economie","cas autre","Ecologie","Autonomie", "test Eco")
grep("Eco", v2, value=TRUE)
rep("^Eco", v2, value=TRUE)
Eric

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: pb caractere generique ifelse

Messagepar Serge Rapenne » 23 Nov 2017, 15:46

Bonjour,

Code : Tout sélectionner

dta$categorie=with(dta, ifelse(grepl("^Eco",type),"Eco", "Z"))

Le "^" n'est pas forcement nécessaire dans ton cas. Il permet de chercher les chaine qui commence par Eco, si tu avais un type "A_Eco" par exemple, il ne serait pas sélectionné par grepl("^Eco",type) alors qu'il le serait par grepl("Eco",type)

Serge

Edit : grillé


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité