Je cherche à répéter une étape en fonction de différentes modalités.
Par ex : j'ai un data frame avec des informations par client.
Je souhaite réccupérer les modalités uniques de certaines colonnes (ici par Sexe). Ensuite je souhaite créer autant de data frame que de modalités. Par exemple ici, je cherche les modalités uniques de Sexe (Femme et Homme) et je souhaite créer ensuite 2 data frame pour les 2 modalités.
J'aimerais créer une boucle ou fonction pour n'avoir qu'à définir au départ juste le nom des colonnes sur lesquelles je souhaite effectuer le traitement.
Mais je ne sais pas du tout comment m'y prendre et ce qui serait le mieux entre boucle ou fonction.
Merci de votre aide
Code : Tout sélectionner
library (dplyr)
pop <- data.frame(client=1:5,
tranche_age=c("35-54 ans","18-34 ans","55 ans et +","18-34 ans", "-18 ans"),
sexe=c("Homme","Femme","Femme", "Homme", "Femme"),
nb_pers_foyers=c(4,2,5,3,1),
csp=c("Ouvrier", "Cadre", "Employé", "Ouvrier", "Retraité"),
q_1=c("Oui","Non","Non","Oui","Non"),
q_2=c("Non","Oui","Oui","Oui","Non"),
q_3=c("Oui","Oui","Non","Non","Oui"))
pop$poids <- 1
list <- list(unique(pop$sexe))
pop_femme <- filter(pop, sexe=="Femme")
data_femme <- select(pop_femme, client, poids, starts_with("q"))
for(i in 3:length(data_femme)){
colonne <- data_femme[,i]
colonne[colonne == "Oui"] <- '1'
colonne[colonne == "Non"] <- '0'
colonne[colonne != '0' & colonne != '1'] <- NA
colonne <- colonne %>% unlist() %>% as.numeric()
data_femme[,i] <- colonne
}
pop_homme <- filter(pop, sexe=="Homme")
data_homme <- select(pop_homme, client, poids, starts_with("q"))
for(i in 3:length(data_homme)){
colonne <- data_homme[,i]
colonne[colonne == "Oui"] <- '1'
colonne[colonne == "Non"] <- '0'
colonne[colonne != '0' & colonne != '1'] <- NA
colonne <- colonne %>% unlist() %>% as.numeric()
data_homme[,i] <- colonne
}