logo

SAS2R Cnaf Module 3 Collecter le résultat (8 minutes)

SAS2R Cnaf Module 3 Collecter le résultat (8 minutes)

    # tableau croisé houses %>% pivot_wider(id_cols = neighbourhood_cleansed, names_from = room_type, values_from = accommodates, values_fn = sum, values_fill=0) %>% collect() %>% knitr::kable() # qu’on copie ensuite –> il est joli ! |neighbourhood_cleansed | Entire home/apt| Private room| Shared room| |:———————-|—————:|————:|———–:| |Reuilly | 124| 11| 0| |Ménilmontant | 380| 102| 0| |Opéra | 58| 7| 0| |Temple | 39| 0| 0| |Popincourt | 160| 21| 0| |Entrepôt | 94| 8| 1| |Palais-Bourbon | 24| 3| 0| |Passy | 121| […]

SAS2R Cnaf Module 3 Pivots (18 minutes)

    # empiler les infos (exemple sans application directement utile !) houses %>% select(id, beds, bedrooms, accommodates) %>% pivot_longer(cols = -id) # mais une utilité dans {ggplot2} par exemple # pour ceux qui voudraient voir : library(ggplot2) houses %>% select(id, beds, bedrooms, accommodates) %>% pivot_longer(cols = -id) %>% collect() %>% ggplot() + aes(x=value) + geom_boxplot() + facet_wrap(~name) # énumérer les équipements houses %>% mutate(equipements = translate(amenities, »\\| », »; »)) %>% separate(equipements, into=paste(« equip »,1:30, sep= » »), sep= »; », remove=FALSE) %>% select(id, starts_with(« equip »)) %>% pivot_longer(cols = -id, […]

SAS2R Cnaf Module 3 Statistiques descriptives (10 minutes)

    # description générale houses %>% sdf_describe() # sur certaines colonnes seulement houses %>% sdf_describe(cols=c(« price », »accommodates », »bedrooms », »bathrooms »)) # activer {dplyr} pour avoir summarise et group_by library(dplyr) # prix moyen houses %>% summarise(mean(price, na.rm=TRUE)) # prix moyen par quartier houses %>% group_by(neighbourhood_cleansed) %>% summarise(mean(price)) %>% ungroup() # prix moyen par type de logement et de location houses %>% group_by(room_type, property_type) %>% summarise(mean(price)) %>% ungroup() # plusieurs statistiques houses %>% group_by(room_type, property_type) %>% summarise(moy=mean(price), n=n()) %>% ungroup() # loueurs proposant le plus de […]

SAS2R Cnaf Module 3 Tris et doublons (7 minutes)

    # logements disponibles en août calendar %>% filter(substr(date,6,7)== »08″) %>% sdf_nrow() # il n’y en a pas vraiment 853 318 ! # il faut éliminer les doublons calendar %>% filter(substr(date,6,7)== »08″) %>% distinct(listing_id) %>% sdf_nrow() # il y en a 36 444 # tri des appartements par prix (croissant) flats %>% select(id, price, accommodates) %>% sdf_sort(« price ») # puis par prix décroissant flats2 % filter(accommodates == 2) %>% select(id, price, accommodates)

SAS2R Cnaf Module 3 Jointures (12 minutes)

    # empilement des trois catégories de logement logements % sdf_bind_rows(houses) %>% sdf_bind_rows(other) logements %>% sdf_nrow() # vérification du nombre de lignes flats %>% sdf_nrow() + houses %>% sdf_nrow() + other %>% sdf_nrow() # on peut aussi énumérer toutes les tables à empiler d’un coup logements % # dans ce dernier cas, on peut créer une variable de disponibilité mutate(dispo = if_else(is.na(date), « pas disponible », paste(« disponible à », price_y, « €/nuit »))) apparts_bourse %>% select(id, dispo, date, price_y)

SAS2R Cnaf Module 3 Création de variables (13 minutes)

    # création de variables # prix et capacité, formules conditionnelles houses %>% select(id, accommodates, price) %>% mutate(capacite = if_else(accommodates

SAS2R Cnaf Module 3 Sélections (16 minutes)

    # choisir des colonnes houses %>% select(id, price, accommodates) # réordonner les colonnes houses %>% select(id, price, everything()) # pour gagner du temps houses %>% select(starts_with(« host »)) # signe moins = on élimine les colonnes houses %>% select(-ends_with(« type »), -starts_with(« host »), -amenities) # maisons du 14e arrondissement houses %>% filter(zipcode == « 75014 ») %>% select(id) # maisons du 14e arrondissement et sélection de colonnes houses %>% filter(zipcode == « 75014 ») %>% select(id,price,accommodates) # maisons du 14e arrondissement # accueillant plus de 4 personnes […]

SAS2R Cnaf Module 3 Principe de {sparklyr} (7 minutes)

    houses %>% filter(price < 100) %>% select(id, price, accommodates) houses %>% filter(price < 100) %>% select(id, price, accommodates) %>% collect()

SAS2R Cnaf Module 3 Décrire les données (7 minutes)

    library(tidyverse) str(flats) # pas une bonne solution sur ces données glimpse(flats) head(flats)

SAS2R Cnaf Module 3 Principe de {ggplot2} (4 minutes)

SAS2R Cnaf Module 3 Principales géométries (4 minutes)

SAS2R Cnaf Module 3 Présentation de Databricks (18 minutes)

Organisation de la leçon (valable pour toutes les pages de ce cours, sauf les exercices et les QCM) 1) Un support Powerpoint à lire (pas de son). Possibilité de le télécharger ou de le passer en plein écran (en bas à droite du diaporama). Pour faire défiler les diapos, il suffit de cliquer dessus. 2) Une vidéo (avec du son) pour revenir sur les exemples du support. Possibilité de plein écran (en bas à droite, juste à côté de VIMEO). […]

SAS2R Cnaf Module 3 Correction – EXERCICE N°17

# sur Databricks library(dplyr) # pour group_by et ungroup fr1_1214 %>% filter(DEPCOMDO %in% c(« 75″, »77″, »78″, »91″, »92″, »93″, »94″, »95 »)) %>% group_by(DEPCOMDO) %>% summarise(NB_DOSSIERS = n(), NB_RSA = sum(RSAVERS, na.rm=TRUE), NB_COUV = sum(PERSCOUV, na.rm=TRUE)) %>% ungroup() %>% collect() %>% arrange(DEPCOMDO) %>% dput() # sur RStudio PC library(openxlsx) # mise à jour de classeurs Excel # données à insérer —- agregat

SAS2R Cnaf Module 3 Correction – EXERCICE N°16

# sur RStudio PC # récupéré du dput() donnees% set_header_labels(« PERSCOUV » = « Nombre de personnes couvertes ») %>% add_header_row(top=TRUE, c(« Nombre de personnes couvertes », rep(« Nombre de dossiers éligibles », ncol(donnees)-2))) %>% merge_v(part= »header ») %>% merge_h(part= »header ») %>% align(part= »header », align= »center ») graphique % filter(DEPCOMDO == {{dept}}) %>% select(-DEPCOMDO) %>% pivot_longer(cols = -PERSCOUV, names_to = « PRESTATION », values_to = « NB ») %>% mutate(PRESTATION = fct_reorder(PRESTATION, NB, sum)) %>% ggplot() + aes(y=PRESTATION, x=NB) + geom_bar(stat= »summary », fun=sum) + labs(x=NULL, title= »Nombre de dossiers éligibles », caption=paste(« Département », {{dept}})) + scale_x_continuous(labels = nb) ggsave(« c:/temp/graphique.emf », graphique, width=4, height=4.5) […]

SAS2R Cnaf Module 3 Correction – EXERCICE N°15

library(dplyr) library(ggplot2) fr1_1214 %>% filter(DEPCOMDO %in% c(« 44″, »85″, »49″, »53 »)) %>% group_by(DEPCOMDO) %>% summarise(across(ends_with(« VERS ») & ! starts_with(« MT »), sum, na.rm=TRUE)) %>% ungroup() %>% pivot_longer(-DEPCOMDO, names_to= »PRESTATION », values_to= »NB_DOSSIERS_ELIGIBLES ») %>% collect() %>% mutate(PRESTATION = gsub(« VERS », » », PRESTATION)) %>% ggplot() + aes(y=DEPCOMDO, x=NB_DOSSIERS_ELIGIBLES) + geom_col() + facet_wrap(~PRESTATION)

SAS2R Cnaf Module 3 Correction – EXERCICE N°14

library(dplyr) library(ggplot2) fr1_1214 %>% filter(DEPCOMDO %in% c(« 22″, »29″, »35″, »56 »)) %>% group_by(DEPCOMDO) %>% summarise(nb_dossiers_RSA_versables = sum(RSAVERS, na.rm=TRUE)) %>% ungroup() %>% ggplot() + aes(y=DEPCOMDO, x=nb_dossiers_RSA_versables) + geom_col()

SAS2R Cnaf Module 3 Correction – EXERCICE N°13

# sur Databricks library(dplyr) # group_by et summarise fr1_1214 %>% tcd_pct_lignes(lignes=DEPCOMDO, colonnes=AAHVERS) %>% rename(« Département »= »DEPCOMDO », « Non »= »0 », « Oui »= »1 ») %>% dput() # sur RStudio PC library(flextable) # mise en forme de tableaux statistiques library(dplyr) # requêtes tab % arrange(Département) %>% filter(Département != « 00 ») %>% flextable() %>% add_header(« Département »= »Département », « Non »= »% AAH versable », « Oui »= »% AAH versable ») %>% merge_v(part= »header ») %>% merge_h(part= »header ») %>% theme_box() %>% bg(part= »header », bg=gray(0.8)) %>% bg(j=1, bg=gray(0.8)) %>% bold(j=1)

SAS2R Cnaf Module 3 Correction – EXERCICE N°12

library(dplyr) tcd_comptage % summarise(nb = n()) %>% ungroup() %>% pivot_wider(id_cols = {{lignes}}, names_from = {{colonnes}}, values_from = nb, values_fn = sum) return(res) } tcd_comptage(fr1_1214, lignes=DEPCOMDO, colonnes=AFVERS)

SAS2R Cnaf Module 3 Correction – EXERCICE N°11

nmiss % mutate(across(where(is.numeric), ~ ifelse(.x == 9999999 | is.na(.x), 1, 0))) %>% summarise(across(where(is.numeric), sum, na.rm=TRUE)) } nmiss(fr1_1214)

SAS2R Cnaf Module 3 Correction – EXERCICE N°10

fr1_1214_bis % mutate(across(starts_with(« MT »), ~ ifelse(.x == 9999999, NA, .x))) fr1_1214_bis

SAS2R Cnaf Module 3 Correction – EXERCICE N°9

liste_caf % select(NUMCAF) %>% distinct() %>% collect() %>% pull() for(caf in {{liste_caf}}){ tmp % filter(NUMCAF == {{caf}} & AAHVERS == « 1 ») %>% select(NORDALLC, NUMCAF, MTREVBRU) %>% collect() assign(paste0(« aah_caf_ », {{caf}}), tmp) rm(tmp) } ls()

SAS2R Cnaf Module 3 Correction – EXERCICE N°8

min

SAS2R Cnaf Module 3 Correction – EXERCICE N°3

fr1_1014_dept09 % filter(DEPCOMDO == « 09 ») fr1_1114_dept09 % filter(DEPCOMDO == « 09 ») tronc_commun % inner_join(fr1_1114_dept09, by= »NORDALLC », suffix=c(« _10″, »_11 »)) %>% inner_join(fr1_1214 %>% filter(DEPCOMDO == « 09 »), by= »NORDALLC », suffix=c(«  », »_12″)) tronc_commun %>% sdf_nrow() nouveaux % filter(DEPCOMDO == « 09 ») %>% left_join(fr1_1114_dept09 %>% select(NUMCAF, NORDALLC), by= »NORDALLC », suffix=c(« _12″, »_11 »)) %>% filter(is.na(NUMCAF_11)) nouveaux %>% sdf_nrow()

SAS2R Cnaf Module 3 Correction – EXERCICE N°7

prestations % select(ends_with(« VERS »)) %>% colnames() %>% gsub(« ^(.*)VERS$ », »\\1″,.) prestations

SAS2R Cnaf Module 3 Correction – EXERCICE N°6

library(dplyr) departements % filter(DEPCOMDO %in% {{departements}}) %>% group_by(DEPCOMDO) %>% summarise(nb_dossiers = n(), pct_aah = mean(as.integer(AAHVERS), na.rm=TRUE)*100) %>% ungroup() departements % filter(DEPCOMDO %in% {{departements}}) %>% group_by(DEPCOMDO) %>% summarise(nb_dossiers = n(), pct_aah = mean(as.integer(AAHVERS), na.rm=TRUE)*100) %>% ungroup()

SAS2R Cnaf Module 3 Correction – EXERCICE N°5

library(dplyr) departement % filter(DEPCOMDO == {{departement}}) %>% summarise(nb_dossiers = n(), pct_aah = mean(as.integer(AAHVERS), na.rm=TRUE)*100) departement % filter(DEPCOMDO == {{departement}}) %>% summarise(nb_dossiers = n(), pct_aah = mean(as.integer(AAHVERS), na.rm=TRUE)*100)

SAS2R Cnaf Module 3 Correction – EXERCICE N°4

library(dplyr) fr1_1214 %>% filter(DEPCOMDO %in% c(« 75″, »77″, »78″, »91″, »92″, »93″, »94″, »95 »)) %>% group_by(DEPCOMDO) %>% summarise(nb_personnes_couvertes = sum(PERSCOUV, na.rm=TRUE)) %>% ungroup() %>% arrange(desc(nb_personnes_couvertes))

SAS2R Cnaf Module 3 Correction – EXERCICE N°2

fr1_1214 %>% select(NORDALLC, ANNNEN1) %>% mutate(AGE_EN1 = ifelse(ANNNEN1 == 0, NA, 2014 – ANNNEN1), AGE_EN1_ACTUEL = ifelse(ANNNEN1 == 0, NA, year(today()) – ANNNEN1)) Notez la différence de type entre les 2 variables créées la constante 2014 est comprise comme un nombre réel, pas un entier, donc AGE_EN1 est un réel. Si on utilisait l’écriture 2014L ce serait un entier, et AGE_EN1 un entier également. Autre écriture plus lisible, as.integer(2014)-ANNNEN1

SAS2R Cnaf Module 3 Correction – EXERCICE N°1

idf_1214 % filter(DEPCOMDO %in% c(« 75″, »77″, »78″, »91″, »92″, »93″, »94″, »95 ») & MTRNIFOY != 9999999) %>% select(NORDALLC, MTRNIFOY, DEPCOMDO, PERSCOUV, MTQFCNAF) idf_1214 %>% sdf_nrow() idf_1214

SAS2R Cnaf Module 3 EXERCICE N°17

Mettre à jour le classeur Excel disponible ici avec les nombres de dossiers, les nombres de dossiers où le RSA est versable et le nombre de personnes couvertes par département pour l’Ile de France à partir des données de fin 2014. Seules les colonnes C, D et F sont à remplir ; la colonne B est fixe et la colonne E est automatiquement calculée. La ligne de total du tableau est également calculée automatiquement. Enregistrer votre version du classeur sous […]

SAS2R Cnaf Module 3 EXERCICE N°16

Ceci est un exercice de synthèse. Il est assez long et contient beaucoup de choses vues précédemment. Prenez votre temps, pas de panique ! Et compliquez votre code petit à petit, c’est la meilleure façon d’arriver au résultat voulu. Mettre à jour le document Word disponible ici avec un tableau flextable et un graphique comme ceux-ci (ceux-là concernent le département 75). Le but est de produire un document Word par département à partir du modèle fourni, pour la région Ile […]

SAS2R Cnaf Module 3 EXERCICE N°15

A partir des dossiers de la région Pays de Loire (départements 44, 49, 52 et 85), construire le graphique ci-dessous indiquant par prestation et par département le nombre de dossiers éligibles.

SAS2R Cnaf Module 3 EXERCICE N°14

Sur les dossiers de la région Bretagne (départements 22, 29, 35, 56), faire un diagramme en bâtons montrant le nombre de dossiers où le RSA est versable.

SAS2R Cnaf Module 3 EXERCICE N°13

Voici la fonction tcd_pct_lignes. tcd_pct_lignes <- function(df, lignes, colonnes){ library(dplyr) res <- df %>% group_by({{lignes}},{{colonnes}}) %>% summarise(n=n()) %>% group_by({{lignes}}) %>% mutate(pct = round(n/sum(n, na.rm=TRUE)*100,1)) %>% ungroup() %>% pivot_wider(id_cols = {{lignes}}, names_from = {{colonnes}}, values_from = pct, values_fill = 0) %>% collect() return(res) } A partir du résultat de tcd_pct_lignes(fr1_1214, lignes=DEPCOMDO, colonnes=AAHVERS) %>% rename(« DEPCOMDO »= »Département », « 0 »= »Non », « 1 »= »Oui ») %>% dput() exécuté sur Databricks, produire le flextable ci-dessous sur RStudio PC.

SAS2R Cnaf Module 3 EXERCICE N°12

Créer la fonction tcd_comptage ayant trois arguments, un nom de table et deux noms de variables, tous fournis sans guillemets, qui renvoie un tableau croisé avec une des variables en ligne, l’autre en colonne, et des comptages dans les cases. Tests : tcd_comptage(fr1_1214, lignes=DEPCOMDO, colonnes=AFVERS)

SAS2R Cnaf Module 3 EXERCICE N°11

Créer la fonction nmiss ayant une table pour argument, qui compte les valeurs 9999999 ou NA dans toutes les colonnes de type numérique. Astuce : recodez d’abord toutes les variables numériques en 0 ou 1 selon qu’elles contiennent 999999 ou NA (valeur 1) ou d’autres valeurs (valeur 0). Tests : nmiss(fr1_1214) # Source: spark<?> [?? x 22]   MTRNIFOY PERSCOUV MTARSVER MTLOGCAL MTQFCNAF MTREVBRU MTPFVERS MTBPAJEV      <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl>    <dbl> 1  1060439        0        0        0        […]

SAS2R Cnaf Module 3 EXERCICE N°10

Faites une nouvelle version de la table Spark fr1_1214 (fr1_1214_bis) ; dans toutes les colonnes dont le nom commence par MT, remplacez la valeur 9999999 par NA.

SAS2R Cnaf Module 3 EXERCICE N°9

Créer autant d’objets R que de CAF dans lesquels on conservera les allocataires pouvant percevoir l’AAH. Les colonnes conservées sont le numéro allocataire, le code de la CAF et le montant des revenus bruts (MTREVBRU). Chaque objet créé doit s’appeler aah_caf_xxx où xxx est à remplacer par le numéro de la CAF, par exemple aah_caf_011. Astuce : pour lister les codes des CAF on peut utiliser le code suivant, qui crée un vecteur texte. liste_caf <- fr1_1214 %>% select(NUMCAF) %>% […]

SAS2R Cnaf Module 3 EXERCICE N°8

En commençant le code par min <- 500 max <- 1500 créer un objet R qui contiendra la liste des dossier du Calvados (département 14) avec un revenu brut (MTREVBRU) compris entre ces deux bornes (incluses). L’objet créé s’appellera dossiers_calvados_500_1500

SAS2R Cnaf Module 3 EXERCICE N°7

Créer un vecteur texte contenant la liste des prestations décrites dans les colonnes dont le nom se termine par VERS. Pour cela, récupérer les noms de ces colonnes puis éliminer le suffixe VERS des noms obtenus. Aide : la fonction gsub peut vous aider à supprimer le suffixe VERS avec la syntaxe gsub(« ^(.*)VERS$ », »\\1″, X ) où X est le vecteur des noms

SAS2R Cnaf Module 3 EXERCICE N°6

En commençant le code par departements <- c(« 22″, »29″, »35″, »56 ») compter à partir de fr1_1214 le nombre de dossiers et le % de ceux-ci pouvant prétendre à l’AAH (c’est-à-dire les dossiers où AAHVERS vaut 1) pour la région Bretagne, par département. Essayer ensuite avec une autre région (Alsace, soit 67 et 68, par exemple). # exemple de résultat # DEPCOMDO nb_dossiers pct_aah #   <chr>          <dbl>   <dbl> # 1 29 148935 9.94 # 2 22 89226 10.3 # 3 35 194015 7.93 # […]

SAS2R Cnaf Module 3 EXERCICE N°5

En commençant le code par departement <- « 17 » compter à partir de fr1_1214 le nombre de dossiers et le % de ceux-ci pouvant prétendre à l’AAH (c’est-à-dire les dossiers où AAHVERS vaut 1) pour le département 17 (Charente-Maritime). Essayer ensuite avec un autre département (29 – Finistère, par exemple). # exemple de résultat #   nb_dossiers pct_aah #         <dbl>   <dbl> # 1      104200    8.99

SAS2R Cnaf Module 3 EXERCICE N°3

Charger les tables fr1_1014 et fr1_1114 depuis ALLSTAT en se cantonnant aux données du département de l’Ariège (09) ; combien y a-t-il d’allocataires présents aux mois d’octobre, de novembre et de décembre (la clé commune est NORDALLC). (Réponse : 26 095) Combien d’allocataires sont présents en décembre mais pas en novembre ? (Réponse : 585) Indice : leur numéro de CAF (colonne NUMCAF) n’est pas renseigné s’ils sont absents à un mois donné, une fois la jointure faite.

SAS2R Cnaf Module 3 EXERCICE N°4

La colonne PERSCOUV dans fr1_1214 indique le nombre de personnes couvertes dans le dossier. Sur les départements d’Ile de France, quel sont les 3 départements qui couvrent le plus de personnes ? Réponse : 1-Seine St Denis (93), 2-Paris (75), 3-Hauts de Seine (92)

SAS2R Cnaf Module 3 EXERCICE N°1

Créer un objet idf_1214 à partir du ALLSTAT fr1_1214 des dossiers domiciliés (DEPCOMDO) en Ile de France (départements 75, 77, 78, 91, 92, 93, 94, 95) dont le revenu est connu (MTRNIFOY ne vaut pas 9999999) ; on ne conservera que les colonnes NORDALLC, MTRNIFOY, DEPCOMDO, PERSCOUV et MTQFCNAF L’afficher et compter son nombre de lignes avec sdf_nrow(). On obtient 1 788 146 observations et 5 variables.

SAS2R Cnaf Module 3 EXERCICE N°2

Quel est le type de la colonne ANNNEN1 dans les données fr1_1214 ? Il s’agit de l’année de naissance du 1er enfant rattaché au dossier (0 quand il n’y a pas d’enfant). En dériver une colonne AGE_EN1 qui correspond à l’âge de l’enfant en fin d’année 2014, avec des NA quand il n’y a pas d’enfant. Même question si on veut l’âge à la fin de l’année en cours dans une autre colonne AGE_EN1_ACTUEL.

RPLUS Depp 2022 Création de fonctions (35 minutes)

  # une fonction simple n_unique % summarise(nb_quartiers = n_unique(neighbourhood_cleansed)) # mise en commun d’opérations à réaliser sur plusieurs tables preparation % select(id, neighbourhood_cleansed, price, accommodates, room_type) return(result) } # applications preparation(houses) preparation(flats) # + insérer le nom de la table source dans une colonne preparation % select(source, id, neighbourhood_cleansed, price, accommodates, room_type) return(result) } bind_rows(preparation(houses), preparation(other), preparation(flats)) # utilisation de l’ellipse # calcul d’intervalle de confiance de la moyenne ic

RPLUS Depp 2022 Fonctions-boucles (26 minutes)

  # type de chaque colonne de houses lapply(houses, class) # moyenne de chaque colonne de houses sapply(houses, mean, na.rm=TRUE) # nombre de valeurs distinctes de chaque colonne de houses sapply(houses, function(x){ length(unique(x))}) # prix moyen par type de location tapply(houses$price, houses$room_type, mean, na.rm=TRUE) # prix moyen par capacité tapply(houses$price, houses$accommodates, mean, na.rm=TRUE) # fonctions-boucles de {dplyr} —- # mettre les noms de toutes les colonnes en majuscules houses2 % rename_all(toupper) glimpse(houses2) # nombre de valeurs distinctes de toutes les […]

RPLUS Depp 2022 Le package {purrr} (11 minutes)

   # nombre de valeurs distinctes de chaque colonne de flats map_int(flats, function(x){length(unique(x))}) # idem en lambda-fonction map_int(flats, ~ length(unique(.x))) # on peut aussi utiliser . au lieu de .x dans la syntaxe ci-dessus # nombre de NA et de valeurs distinctes par colonne de flats map2(flats, colnames(flats), ~ { res <- c(sum(is.na(.x)), length(unique(.x))) names(res) <- c(paste0(« nb_NA_ », .y), paste0(« nb_val_ », .y)) return(res) }) # diagramme en bâtons s’il y a moins de 10 modalités walk(flats, ~ if(length(unique(.)) < 30) { […]

RPLUS Depp 2022bis Correction – EXERCICE N°11

nmiss <- function(df, colonne){ return(sum(is.na(df[[colonne]]))) } nmiss(agents, « sexe »)

RPLUS Depp 2022bis Correction – EXERCICE N°10

nmiss <- function(x){ return(sum(is.na(x))) } nmiss(agents$sexe)

RPLUS Depp 2022bis Correction – EXERCICE N°12

etab2 <- etab %>% mutate( across( where( ~ length(unique(.x)) < 50 & is.character(.x) ), as.factor ) )

RPLUS Depp 2022bis EXERCICE N°12

Faites une nouvelle version du data.frame etab (etab2) dans laquelle toutes les variables de type caractère avec moins de 50 valeurs distinctes sont transformées en facteurs.

RPLUS Depp 2022bis EXERCICE N°11

Créer la fonction nmiss ayant un data.frame et un nom de colonne pour arguments, qui compte les valeurs manquantes dans le vecteur. Tests : nmiss(agents, « sexe ») # doit répondre 796

RPLUS Depp 2022bis EXERCICE N°10

Créer la fonction nmiss ayant un vecteur pour argument, qui compte les valeurs manquantes dans le vecteur. Tests : nmiss(agents$sexe) # doit répondre 796

RPLUS Depp 2022 Correction – EXERCICE N°15

# packages utiles —- library(openxlsx) # mise à jour de classeurs Excel library(tidyverse) # pour le bon fonctionnement de crosstab # données à insérer —- nb_agents

RPLUS Depp 2022 Correction – EXERCICE N°14

# fonction pour mise en forme des tableaux —- tableau % crosstab(…) %>% flextable() %>% add_header(« NATURE_UAI »= »NATURE_UAI », « PR »= »Secteur », « PU »= »Secteur ») %>% merge_v(part= »header ») %>% merge_h(part= »header ») %>% theme_box() %>% bg(part= »header », bg=gray(0.8)) %>% bg(j=1, bg=gray(0.8)) %>% bold(j=1) } # packages utiles —- library(flextable) # mise en forme des tableaux library(officer) # mise à jour d’un document Word library(lubridate) # pour la fonction today() # création des tableaux —- tab1 % filter(NATURE_UAI < "150") %>% tableau(rows=NATURE_UAI, cols=SECTEUR_PUBLIC_PRIVE) tab2 % filter(between(NATURE_UAI, »151″, »199″)) %>% tableau(rows=NATURE_UAI, cols=SECTEUR_PUBLIC_PRIVE) tab3 % filter(NATURE_UAI […]

RPLUS Depp 2022 Correction – EXERCICE N°13

library(flextable) # mise en forme de tableaux statistiques set_flextable_defaults(big.mark = « \uA0″, na_str= »0 ») crosstab % summarise(n=n()) %>% ungroup() %>% pivot_wider(id_cols = {{rows}}, names_from = {{cols}}, values_from = n) return(res) } etab %>% crosstab(rows=NATURE_UAI, cols=SECTEUR_PUBLIC_PRIVE) %>% flextable() %>% add_header(« NATURE_UAI »= »NATURE_UAI », « PR »= »Secteur », « PU »= »Secteur ») %>% merge_v(part= »header ») %>% merge_h(part= »header ») %>% theme_box() %>% bg(part= »header », bg=gray(0.8)) %>% bg(j=1, bg=gray(0.8)) %>% bold(j=1)

RPLUS Depp 2022 Correction – EXERCICE N°11

nmiss

RPLUS Depp 2022 Correction – EXERCICE N°12

nmiss

RPLUS Depp 2022 Correction – EXERCICE N°10

etab2 % mutate( across( where( ~ length(unique(.x)) < 50 & is.character(.x) ), as.factor ) )

RPLUS Depp 2022 Correction – EXERCICE N°9

for (academie in unique(agents$acad)){ write.table(agents %>% filter(acad == {{academie}}), file=paste0(« c:/temp/ »,academie, ».csv »), sep= »; », row.names = FALSE) }

RPLUS Depp 2022 Correction – EXERCICE N°8

min = {{min}} & age % write.table(file=paste0(« c:/temp/agents_ », min, « _ », max, « .txt »), sep= »\t »)

RPLUS Depp 2022 Correction – EXERCICE N°7

dept % filter(substr(etab,1,3)=={{dept}} & ! is.na(sexe)) %>% group_by(nature, sexe) %>% summarise(nb_agents = n(), age_moyen = mean(age, na.rm=TRUE)) %>% ungroup()

RPLUS Depp 2022 Correction – EXERCICE N°6

matieres % filter(discip %in% {{matieres}}) %>% group_by(discip) %>% summarize(effectif = n(), ETP = sum(quotite/100)) %>% ungroup()

RPLUS Depp 2022 Correction – EXERCICE N°5

matiere % filter(discip == {{matiere}}) %>% summarize(effectif = n(), ETP = sum(quotite/100))

RPLUS Depp 2022 EXERCICE N°15

Mettre à jour le classeur Excel disponible ici avec les effectifs des agents par académie selon leur sexe ; l’académie est indiquée dans la colonne C, l’effectif d’agents hommes (sexe=1) en colonne D et d’agents femmes (sexe=2) en colonne F. On pourra utiliser la fonction crosstab de l’exercice 13 pour faire les calculs avec crosstab(agents, rows=acad, cols=sexe).

RPLUS Depp 2022 EXERCICE N°14

Mettre à jour le document Word disponible ici avec trois tableaux dérivés de ceux de l’exercice 13, le nombre total d’établissements et la date de production de la note. Pour rappel, NATURE_UAI de 101 à 150 = maternelle, de 151 à 199 = élémentaire, de 300 à 399 = second degré.

RPLUS Depp 2022 EXERCICE N°13

Voici la fonction crosstab. crosstab <- function(df, rows, cols){   library(tidyverse)   res <- df %>%            group_by({{rows}},{{cols}}) %>%            summarise(n=n()) %>%            ungroup() %>%            pivot_wider(id_cols = {{rows}},                        names_from = {{cols}},                        values_from = n)   return(res) } A partir du résultat de crosstab(etab, rows=NATURE_UAI, cols=SECTEUR_PUBLIC_PRIVE) produire le flextable ci-dessous.  

RPLUS Depp 2022 EXERCICE N°12

Les descriptifs des fichiers sont ici. Créer la fonction nmiss ayant un data.frame et un nom de colonne pour arguments, qui compte les valeurs manquantes dans le vecteur. Tests : nmiss(agents, « sexe ») # doit répondre 796

RPLUS Depp 2022 EXERCICE N°11

Les descriptifs des fichiers sont ici. Créer la fonction nmiss ayant un vecteur pour argument, qui compte les valeurs manquantes dans le vecteur. Tests : nmiss(agents$sexe) # doit répondre 796

RPLUS Depp 2022 EXERCICE N°10

Faites une nouvelle version du data.frame etab (etab2) dans laquelle toutes les variables de type caractère avec moins de 50 valeurs distinctes sont transformées en facteurs.

RPLUS Depp 2022 EXERCICE N°9

Exporter dans autant de fichiers CSV à séparateur point-virgule (avec la fonction write.table) les agents selon leur académie. Chaque fichier portera le nom de l’académie, par exemple LYON.CSV.

RPLUS Depp 2022 EXERCICE N°8

En commençant le code par min <- 40 max <- 50 créer un fichier texte (fonction write.table) qui contiendra la liste des agents avec un âge compris entre ces deux bornes (incluses). Le fichier s’appellera agents_40_50.txt

RPLUS Depp 2022 EXERCICE N°7

Paramétrer le département (sur 3 chiffres avec des zéros à gauche) et calculer pour un département donné le nombre d’agents et leur âge moyen par nature d’établissement et par sexe (uniquement les sexes renseignés).

RPLUS Depp 2022 EXERCICE N°6

En commençant le code par matieres <- c(« L1300″, »L1500 ») compter à partir de SERVICE le nombre d’agents et les ETP (sur la base de QUOTITE) qui enseignent cette matière (ici les maths et la physique). # exemple de résultat # discip  effectif         ETP # L1300      37914       37061 # L1500      19260       18881

RPLUS Depp 2022 EXERCICE N°5

En commençant le code par matiere <- « L1300 » compter à partir de SERVICE le nombre d’agents et les ETP (sur la base de QUOTITE) qui enseignent cette matière (ici les maths). # exemple de résultat # effectif         ETP #    37914       37061

Présentation des données pour les exercices

Les données sont rassemblées dans un classeur Excel comprenant 2 onglets : CREDITS AUX ENTREPRISES Une ligne correspond à un crédit accordé à une entreprise par une banque. Les colonnes sont les suivantes : Identifiant de l’entreprise (numéro SIREN, modifié) Identifiant de la banque (code banque, modifié) Montant en euros du crédit Durée initiale du crédit en mois Taux auquel le prêt est consenti Objet du prêt (motif d’utilisation) en 3 catégories : trésorerie, immobilier et investissement Le prêt est-il […]

STAT101_XL BdF Correction – EXERCICE N°7

Le coefficient de corrélation de Pearson vaut 0,118 ce qui semble très faible. Comme la corrélation de Spearman vaut 0,611 il est probable que la relation est plutôt monotone que réellement linéaire. Le nuage de points n’est pas très clair sur ce sujet, car il est très encombré à gauche. La corrélation est ici une manière de voir ce que l’oeil ne perçoit pas.

STAT101_XL BdF Correction – EXERCICE N°6

Masquez les lignes correspondant aux dates antérieures à janvier 2010. Ajoutez une colonne pour la moyenne mobile, en commençant en avril 2010. La formule est la moyenne des encours pour les 3 mois précédents, le mois courant et les 3 mois suivants. Tracer les courbes, modifier les graduations des axes, l’aspect de la courbe des données brutes, ajouter un titre et déplacer la légende dans le graphique pour gagner de la place. Notez comme la moyenne mobile gomme les petites […]

STAT101_XL BdF Correction – EXERCICE N°5

Le graphique est une variante des barres 100% qui ne sont pas empilées mais groupées. Il faut donc avoir calculé le pourcentage en amont. Partir d’un TCD sur les données TYPE DE TAUX et DESTINATION. Si on met les types de taux en lignes et les destinations en colonnes, on affichera comme % du total de la ligne. Ajuster les graduations de l’axe, masquer les boutons gris de champs, ajouter un titre.

STAT101_XL BdF Correction – EXERCICE N°4

Sélectionner la colonne des TAUX (E), la copier et la coller dans une nouvelle colonne. Trier par ordre croissant ou décroissant. Sélectionner dans INSERTION le graphique BOITE A MOUSTACHES. Ajuster sa largeur, son style et mettre à jour le titre.

STAT101_XL BdF Correction – EXERCICE N°3

Faire un TCD avec les destinations en lignes et le nombre de destinations comme statistique. Transformer en pourcentage du total, éliminer les décimales. Insérer un diagramme en bâtons, modifier le titre, supprimer la légende et par des clics droits sur les champs en fond gris, les masquer.

STAT101_XL BdF Correction – EXERCICE N°2

Un quart des crédits se fait pour un montant inférieur ou égal à 2 228,50 € ; VRAI Les 10% des taux les plus élevés sont supérieurs ou égaux à 9% ; FAUX : c’est 8,55 (9e décile ou 90e centile) La moitié des montants de crédits à taux fixes est supérieure à 10 000 € ; VRAI. Attention, tous les crédits ne sont pas à taux fixe ! La médiane tous types de crédits confondus est de 11 737,50 €, mais ce n’est pas […]

STAT101_XL BdF Correction – EXERCICE N°1

Calculer avec les formules =MOYENNE(E:E) et =MEDIANE(E:E). On obtient respectivement 4,36 et 3,6. Ce n’est pas si éloigné et on peut donc penser que la répartition des taux est plutôt symétrique.

STAT101_XL BdF EXERCICE N°7

A partir de l’onglet  CREDITS AUX ENTREPRISES Pensez-vous que la relation entre le montant et la durée du crédit prenne la forme d’une droite ? Indiquez des statistiques à l’appui de votre opinion – il en faut plus qu’un avis donné par un nuage de points, même si ce dernier est toujours utile.

STAT101_XL BdF EXERCICE N°6

A partir de l’onglet EVOLUTION DES MONTANTS PRETES Représentez avec deux courbes superposées la série des encours de crédits en version brute et moyenne mobile d’ordre 7 entre 2010 et 2020.

STAT101_XL BdF EXERCICE N°5

A partir de l’onglet  CREDITS AUX ENTREPRISES Construisez le graphique suivant.

STAT101_XL BdF EXERCICE N°4

A partir de l’onglet  CREDITS AUX ENTREPRISES Construisez le graphique suivant.

STAT101_XL BdF EXERCICE N°3

A partir de l’onglet  CREDITS AUX ENTREPRISES Construisez le graphique suivant.

STAT101_XL BdF EXERCICE N°2

A partir de l’onglet CREDITS AUX ENTREPRISES Confirmez ou corrigez les affirmations suivantes : Un quart des crédits se fait pour un montant inférieur ou égal à 2 228,50 €. Les 10% des taux les plus élevés sont supérieurs ou égaux à 9% La moitié des montants de crédits à taux fixes est supérieure à 10 000 € 5% des crédits ont une durée supérieure ou égale à 120 mois.

STAT101_XL BdF EXERCICE N°1

A partir de l’onglet CREDITS AUX ENTREPRISES. Comparez la moyenne et la médiane des taux auxquels les crédits sont consentis (colonne E). Pensez-vous que la distribution des taux soit très asymétrique ?

STAT101_XL BdF Corrélations (13 minutes)

STAT101_XL BdF Radars (9 minutes)

STAT101_XL BdF Indices (9 minutes)

STAT101_XL BdF Nuages et courbes (17 minutes)

STAT101_XL BdF Bâtons croisés (9 minutes)

STAT101_XL BdF Tableaux croisés (8 minutes)

STAT101_XL BdF Boîte à moustaches (23 minutes)

STAT101_XL BdF Histogramme (9 minutes)