Savoir le nombre de "mots" dans une modalité d'une variable sans répétition

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

Clément Vix
Messages : 2
Enregistré le : 09 Juil 2018, 07:42

Savoir le nombre de "mots" dans une modalité d'une variable sans répétition

Messagepar Clément Vix » 10 Juil 2018, 07:19

Bonjour à tous,

Je souhaite créer une nouvelle variable sur mon data.frame, les modalités de cette variable doivent correspondre au nombre de "mots" d'une modalité d'une autre variable sans compter les répétitions, par exemple :

J'ai :

Individus Var1
1 A
2 B
3 A
4 C
5 A, B, D
6 D, G
7 E, F
8 A, B, C


Et je voudrais :

Individus Var1 Var2
1 A 1
2 B 1
3 A 0 (car "A" est déjà cité)
4 C 1
5 A, B, D 1 (car "A" et "B" est déjà cités)
6 D, G 1 (car "D" est déjà cité)
7 E, F 2
8 A, B, C 0


En espérant avoir un peu d'aide,
Cordialement,
C.V

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Savoir le nombre de "mots" dans une modalité d'une variable sans répétition

Messagepar Logez Maxime » 10 Juil 2018, 09:49

Bonjour,

Une possibilité :

Code : Tout sélectionner

tab <- structure(list(Individus = 1:8, Var1 = structure(c(1L, 4L, 1L,
5L, 3L, 6L, 7L, 2L), .Label = c("A", "A, B, C", "A, B, D", "B",
"C", "D, G", "E, F"), class = "factor")), .Names = c("Individus",
"Var1"), class = "data.frame", row.names = c(NA, -8L))

auxi <- strsplit(as.character(tab$Var1),",")
ids <- sapply(auxi, length)
ids <- rep(seq_along(ids), ids)
auxi <- unlist(auxi)
auxi <- gsub(" +", "", auxi)
tapply(!duplicated(auxi), ids, sum)
1 2 3 4 5 6 7 8
1 1 0 1 1 1 2 0
Cordialement,
Maxime

Clément Vix
Messages : 2
Enregistré le : 09 Juil 2018, 07:42

Re: Savoir le nombre de "mots" dans une modalité d'une variable sans répétition

Messagepar Clément Vix » 10 Juil 2018, 10:03

Merci beaucoup Maxime, c'est exactement ce que je voulais :)

Cordialement
CV

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

Re: Savoir le nombre de "mots" dans une modalité d'une variable sans répétition

Messagepar Serge Rapenne » 10 Juil 2018, 10:09

Bonjour,

une autre possibilité (mais je dois avouer que je ne l'aime pas beaucoup en raison de l'utilisation de <<- )

Code : Tout sélectionner

dta <- structure(list(Individus = 1:8, Var1 = structure(c(1L, 4L, 1L,
5L, 3L, 6L, 7L, 2L), .Label = c("A", "A, B, C", "A, B, D", "B",
"C", "D, G", "E, F"), class = "factor")), .Names = c("Individus",
"Var1"), class = "data.frame", row.names = c(NA, -8L))

var2<-strsplit(as.character(dta$Var1),", ")
l_elem<-unique(unlist(var2))

compte_elem<-function(x){
  cpt<-sum(x %in% l_elem)
  l_elem<<-l_elem[!l_elem %in%x]
  cpt
}

sapply(var2,compte_elem)
[1] 1 1 0 1 1 1 2 0


Serge


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité