Tableaux imbriqués

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

Karen ZANARDI
Messages : 5
Enregistré le : 19 Sep 2023, 09:43

Tableaux imbriqués

Messagepar Karen ZANARDI » 17 Avr 2024, 14:12

Bonjour,
Débutante en R, je sais effectuer des tableaux basiques mais j'aurai besoin de votre aide pour effectuer des tableaux imbriqués.
Dans ma base de données, je possède plusieurs variables dont deux qui me servent à classer mes personnes en deux découpages : découpage 1 et découpage 2.

Voici ce que j'aimerais obtenir comme rendu (désolé je ne sais pas entrer d'image). Mon découpage 1 est en faite une ligne totale et mon découpage 2 est comme un "dont" :

Académie 1 Académie 2 Académie 3
Enseignants 2nd degré (Découpage 1) 2 000 4 000 10 000
Présents en collège (Découpage 2) 500 2 000 7 000
Présents en lycée (Découpage 2) 1 500 2 000 3 000
Personnels d'assistance (Découpage 1) 800 1 000 4 000
Assistants d'éducation (Découpage 2) 200 500 2 000
AESH (Découpage 2) 600 500 2 000

Voici ce que j'obtiens avec le code que je vous met juste en dessous :
Découpage 1 Découpage 2 Académie 1 Académie 2 Académie 3
Enseignants 2nd degré Présents en collège 500 2 000 7 000
Enseignants 2nd degré Présents en lycée 1 500 2 000 3 000
Personnels d'assistance Assistants d'éducation 200 500 2 000
Personnels d'assistance AESH 600 500 2 000

Voici le code que j'ai entré pour obtenir le rendu ci-dessus :
Tableau_2024_PU <- Base_Memento_2024_PU %>%
spread(`Académie libellé`,`Nombre d'individus`) %>%
mutate(Académie_1 = ifelse(is.na(Académie_1), 0, Académie_1),
Académie_2= ifelse(is.na(Académie_2), 0, Académie_2),
Académie_3= ifelse(is.na(Académie_3), 0, Académie_3)) %>%
group_by(Découpage_1, Découpage_2) %>%
summarize(Académie_1 = sum(Académie_1 ),
Académie_2= sum(Académie_2),
Académie_3= sum(Académie_3))

Je vous remercie par avance pour votre aide,
Bonne journée à tous,

Maxime Deniaux
Messages : 68
Enregistré le : 11 Fév 2022, 22:49
Contact :

Re: Tableaux imbriqués

Messagepar Maxime Deniaux » 17 Avr 2024, 14:55

Bonjour,

est-ce que vous pourriez donner un petit exemple reproductible ? C'est à dire, un extrait de votre Base_Memento_2024_PU.
Parce que sauf si j'ai raté un truc, on ne sait pas de quoi vous partez. Et ça rend la réponse plus compliquée à donner.

Code : Tout sélectionner

Base_Memento_2024_PU <- data.frame(col1 = c(.. , .. , .. , etc) , col 2 = .... , etc)


Merci

Karen ZANARDI
Messages : 5
Enregistré le : 19 Sep 2023, 09:43

Re: Tableaux imbriqués

Messagepar Karen ZANARDI » 18 Avr 2024, 08:12

Bonjour,
Voici un exemple de ma base de données en version simplifiée :
Base_Memento_2024_PU <- data.frame(Date = "Janvier 2024",
Académie = c("Académie 1","Académie 1","Académie 1","Académie 1","Académie 1","Académie 1","Académie 2","Académie 2","Académie 2","Académie 2","Académie 2","Académie 2","Académie 3","Académie 3","Académie 3","Académie 3","Académie 3","Académie 3"),
Decoupage_1 = c("Ens 1D","Ens 1D","Ens 2D","Ens 2D","Education","Education","Ens 1D","Ens 1D","Ens 2D","Ens 2D","Education","Education","Ens 1D","Ens 1D","Ens 2D","Ens 2D","Education","Education"),
Découpage_2 = c("Ecole","Ecole spé","CLG","Lycée","AED","AESH","Ecole","Ecole spé","CLG","Lycée","AED","AESH","Ecole","Ecole spé","CLG","Lycée","AED","AESH"),
Nombre = c("500","500","500","500","500","500","500","500","500","500","500","500","500","500","500","500","500","500"))

N'hésitez pas à me dire si cela n'est pas clair,
Merci par avance :)

Maxime Deniaux
Messages : 68
Enregistré le : 11 Fév 2022, 22:49
Contact :

Re: Tableaux imbriqués

Messagepar Maxime Deniaux » 18 Avr 2024, 10:24

Ce n'est pas en un morceau de code mais je vous propose ça :

Code : Tout sélectionner

Base_Memento_2024_PU <- data.frame(Date = "Janvier 2024",
Académie = c("Académie 1","Académie 1","Académie 1","Académie 1","Académie 1","Académie 1","Académie 2","Académie 2","Académie 2","Académie 2","Académie 2","Académie 2","Académie 3","Académie 3","Académie 3","Académie 3","Académie 3","Académie 3"),
Decoupage_1 = c("Ens 1D","Ens 1D","Ens 2D","Ens 2D","Education","Education","Ens 1D","Ens 1D","Ens 2D","Ens 2D","Education","Education","Ens 1D","Ens 1D","Ens 2D","Ens 2D","Education","Education"),
Decoupage_2 = c("Ecole","Ecole spé","CLG","Lycée","AED","AESH","Ecole","Ecole spé","CLG","Lycée","AED","AESH","Ecole","Ecole spé","CLG","Lycée","AED","AESH"),
Nombre = c("400","200","300","50","800","250","250","150","600","500","750","25","300","275","625","175","345","65"))

Base_Memento_2024_PU        <- Base_Memento_2024_PU %>% select(-Date)
Base_Memento_2024_PU$Nombre <- as.numeric(Base_Memento_2024_PU$Nombre)

# Total decoupage 1
Total                       <- Base_Memento_2024_PU %>% group_by(Decoupage_1, Académie) %>% summarise(Total_Decoupage_1 = sum(Nombre)) %>% pivot_wider(names_from = Académie, values_from = Total_Decoupage_1) %>% rename(Name = Decoupage_1)

# Changement de la structure du tableau, en passant les académies en colonnes + création de la variable name pour le tableau final plus tard
df <- Base_Memento_2024_PU %>% pivot_wider(names_from = Académie, values_from = Nombre) %>% mutate(Name = paste(Decoupage_1, Decoupage_2, sep = "_")) %>% arrange(Decoupage_1) %>% select(-c(Decoupage_1,Decoupage_2))

# Combinaison des 2 tableaux créés
df      <-  bind_rows(df, Total)

# Pour avoir l'affichage proche de ce que vous souhaitez, je pense qu'il faut passer par la création d'une variable facteur (j'espère que vous n'avez pas beaucoup de modalités)
df$Name <-  factor(x = df$Name,
                            levels = c('Education','Education_AED','Education_AESH',
                                                                   'Ens 1D','Ens 1D_Ecole','Ens 1D_Ecole spé',
                                                                   'Ens 2D','Ens 2D_CLG','Ens 2D_Lycée')
                            )

# Et ici je réordonne les colonnes
df <- df %>% arrange(Name) %>% select(Name,`Académie 1`,`Académie 2`,`Académie 3`)
df


Me suis permis de changer les nombres au départ pour que ce soit un peu plus parlant visuellement pour moi.
Je pense que c'est ce que vous souhaitiez obtenir mais j'ai peut-être mal compris.

J'ai laissé quelques commentaires dans le code.

A vous de me dire.

Karen ZANARDI
Messages : 5
Enregistré le : 19 Sep 2023, 09:43

Re: Tableaux imbriqués

Messagepar Karen ZANARDI » 18 Avr 2024, 12:58

Oui, merci beaucoup c'est exactement cela !

J'avoue ne pas tout comprendre à votre code, certaines fonctions me sont totalement inconnues mais je vais regarder plus en détail afin de comprendre chaque fonction utilisée.

Je vous remercie grandement de votre aide !
Bonne journée


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités