logo

rbase bdf Export (4 minutes)

rbase bdf Export (4 minutes)

    library(openxlsx) # export de fichiers XLSX # export des données de houses avec mise en forme write.xlsx(houses, file= »export maisons.xlsx », asTable = TRUE, overwrite = TRUE, sheetName = « Maisons »)

rbase bdf Doublons (7 minutes)

    # liste des loueurs d’appartements # sans doublons (chaque loueur n’apparaît qu’une fois même # s’il loue plusieurs appartements) loueurs % select(host_id, host_name) %>% distinct() loueurs %>% slice(1:10) library(gdata) # diverses fonctions dont duplicated2 # loueurs avec un seul appartement proposé loueurs_un_seul_bien % select(host_id, host_name) %>% filter(!duplicated2(host_id)) loueurs_un_seul_bien %>% slice(1:10) # loueurs avec au moins 2 appartements proposés loueurs_plusieurs_biens % select(host_id, host_name) %>% filter(duplicated2(host_id)) %>% arrange(host_id) loueurs_plusieurs_biens %>% slice(1:10) # liste des loueurs (sans doublons) proposant au moins […]

rbase bdf Tri des données (3 minutes)

    # tri des appartements par prix (croissant) flats %>% arrange(price) %>% slice(1:10) %>% select(id,price,room_type,accommodates) # puis par prix décroissant flats %>% arrange(desc(price)) %>% slice(1:10) %>% select(id,price,room_type,accommodates) # par prix décroissant et pour un même prix, # par nombre de personnes accueillies décroissant flats %>% arrange(desc(price), desc(accommodates)) %>% slice(1:10) %>% select(id,price,room_type,accommodates)

rbase bdf Fusion de tables (16 minutes)

    # empilement des trois catégories de logement logements % slice(1:10) %>% select(id,price.y,dispo)

rbase bdf Formules conditionnelles (17 minutes)

    # ratio prix/nombre de personnes en 2 catégories # plus simple que d’utiliser cut dans ce cas houses % mutate(categ_prix = ifelse(price/accommodates > 40, « cher », « acceptable »)) houses %>% slice(1:10) %>% select(price,accommodates,categ_prix) # plus de 2 cas flats % mutate(type = case_when( room_type == « Entire home/apt » ~ « Logement entier », room_type == « Private room » & accommodates < 4 ~ "Chambre pour 1-3 personnes", room_type == "Private room" ~ "Chambre pour > 3 personnes », accommodates < 3 ~ "Chambre partagée pour […]

rbase bdf Formules, nombres et dates (8 minutes)

    library(lubridate) # gestion des Dates # conversion texte -> Date houses % mutate(debut_loc = as.Date(host_since)) # résultat invisible à l’affichage houses %>% slice(1:10) %>% select(host_since,debut_loc) # mais le type est bien modifié str(houses %>% select(host_since,debut_loc)) houses % mutate( # extraction de l’année annee_debut_loc = year(debut_loc), # calcul d’ancienneté par rapport à aujourd’hui anciennete_loc = (today()-debut_loc)/dyears(1), # avec un arrondi à une seule décimale anciennete_loc2 = round(anciennete_loc, 1)) houses %>% slice(1:10) %>% select(debut_loc, annee_debut_loc, anciennete_loc, anciennete_loc2)

rbase bdf Formules, textes (10 minutes)

    # valeurs d’origine levels(flats$prop_type) # recodage flats % mutate(prop_type2 = fct_recode(prop_type, « Apartment »= »Condominium »)) # on a fusionné des valeurs levels(flats$prop_type2) # fusion des modalités sauf les 20 plus fréquentes # (conversion de la variable d’origine incluse) flats % mutate(zipcode2 = fct_lump_n(zipcode, 20)) # vérification levels(flats$zipcode2) # pour comparer à la version d’origine levels(as.factor(flats$zipcode)) # les 2 premiers caractères flats % mutate(dept = substr(zipcode,1,2)) # vérification levels(as.factor(flats$dept)) # concaténation avec séparateur « – » flats % mutate(host = paste(host_id, host_name, sep= »-« )) # […]

rbase bdf Formules, généralités (13 minutes)

    library(tidyverse) # requêtes etc. # types d’origine str(calendar) # conversion texte -> Date calendar % mutate(date2 = as.Date(date, « %Y-%m-%d »)) # vérification str(calendar) # types d’origine str(flats %>% select(property_type, price)) # conversion texte -> facteur flats % mutate(prop_type = as.factor(property_type), # mise en tranches (conversion numérique -> facteur) tranche_prix = cut(price, c(-Inf, 50, 75, 100, 125, 150, 200, Inf), dig.lab=10) ) # vérification str(flats %>% select(property_type,prop_type, price,tranche_prix)) # facteurs : levels() permet de voir les valeurs possibles levels(flats$prop_type) levels(flats$tranche_prix) […]

rbase bdf Filtres et requêtes (14 minutes)

    # 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 houses %>% filter(zipcode == « 75014 » & accommodates > 4) %>% select(id,price,accommodates) # maisons avec les politiques d’annulation médianes houses %>% filter(cancellation_policy %in% c(« strict », »moderate »))%>% select(id,price,cancellation_policy) # maisons sans note moyenne # mais avec au moins 1 commentaire houses %>% filter(is.na(review_scores_rating) […]

rbase bdf Extraction des données (12 minutes)

    library(tidyverse) # requêtes etc. # la colonne « price » houses$price # syntaxes {dplyr} pull(houses, price) houses %>% pull(price) # les colonnes id, price, accommodates houses %>% select(id, price, accommodates) %>% slice(1:20) # les colonnes id et price en premier houses %>% select(id, price, everything()) %>% slice(1:10) # les colonnes dont le nom commence par « host » houses %>% select(starts_with(« host »)) %>% slice(1:10) # toutes les colonnes sauf celles dont # le nom se termine par « type », ni celles # dont le […]

rbase bdf Organisation des données (4 minutes)

    # type de l’objet flats class(flats) # types des colonnes de flats str(flats) library(tibble) glimpse(flats)

rbase bdf Sauvegarde (9 minutes)

    # sauvegarde de plusieurs objets en un fichier save(flats, houses, other, calendar, file= »donnees_airBnB.Rdata ») # sauvegarde individuelle saveRDS(flats, file= »appartements.RDS ») # restauration des objets # pour un RDS on doit affecter mais pas pour un Rdata load(« donnees_airBnB.Rdata ») apparts

rbase bdf Imports (13 minutes)

IMPORTANT : dans l’environnement Banque de France il faut ajouter à tous les imports avec la fonction read.delim l’option fileEncoding= »WINDOWS-1252″. Le code ci-dessous montre comment l’intégrer. # répertoire par défaut —- setwd(« c:/olivier/airbnb ») # imports —- houses <- read.delim(« houses.csv », sep = « , », stringsAsFactors = FALSE, fileEncoding= »WINDOWS-1252″ ) flats <- read.delim(« flats.csv », sep = « , », stringsAsFactors = FALSE, fileEncoding= »WINDOWS-1252″ ) library(readxl) # import de classeurs Excel other <- read_excel(« other.xlsx ») calendar <- read.delim(« calendar.csv », sep = « , », stringsAsFactors = FALSE) library(haven) # import de fichiers […]

rbase bdf Prise en mains (19 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). […]

SASBASE BDF Correction – EXERCICE N°9

ODS EXCEL FILE= »%SYSFUNC(PATHNAME(work))/bilans2005.xlsx » ; PROC MEANS DATA=exercice.bilans_2005 (WHERE=(d26 IN (« EA », »EB », »EC »))) MEAN MEDIAN ; VAR fj ; CLASS d26 fk ; FORMAT fk exporte. ; WAYS 1 2 ; RUN ; ODS EXCEL CLOSE ;

SASBASE BDF Correction – EXERCICE N°8

PROC IMPORT DATAFILE= »%SYSFUNC(PATHNAME(exercice))/bilans_2004.xlsx » OUT=work.bilans_2004 DBMS=EXCEL REPLACE ; RUN ; PROC CONTENTS DATA=work.bilans_2004 ; RUN ;

SASBASE BDF Correction – EXERCICE N°7

PROC SORT DATA=exercice.bilans_2005 (WHERE=(DI > 0)) OUT=work.benef ; BY d1 ; RUN ; PROC SORT DATA=exercice.siren (RENAME=(siren=d1) WHERE=(commune IN: (« 67″, »68 »))) OUT=work.alsace ; BY d1 ; RUN ; DATA work.benef_alsace ; MERGE work.benef (IN=dans_benef) work.alsace (IN=dans_alsace) ; BY d1 ; IF dans_benef AND dans_alsace THEN OUTPUT ; RUN ;

SASBASE BDF Correction – EXERCICE N°6

DATA work.siren ; SET exercice.siren (WHERE=(dateFermeture IS NOT MISSING)) ; ATTRIB departement LABEL= »Département d’implantation » LENGTH=$2 anciennete LABEL= »Ancienneté de l’entreprise » LENGTH=3 ; departement = SUBSTR(commune,1,2) ; anciennete = YEAR(TODAY()) – YEAR(dateCreation) ; RUN ;

SASBASE BDF Correction – EXERCICE N°5

PROC FORMAT ; VALUE exporte 0 = « non » OTHER = « oui » ; RUN ; PROC MEANS DATA=exercice.bilans_2005 MEAN MEDIAN MAXDEC=1 ; VAR FJ ; CLASS D26 FK ; FORMAT FK exporte. ; RUN ;

SASBASE BDF Correction – EXERCICE N°4

PROC FREQ DATA=exercice.bilans_2005 ; TABLE D26 / NOCUM ; RUN ; PROC FREQ DATA=exercice.bilans_2005 ; TABLE D26 * DI / NOCOL NOPERCENT ; FORMAT DI montants. ; RUN ;

SASBASE BDF Correction – EXERCICE N°3

PROC FORMAT ; VALUE montants LOW –< 0 = "Négatif" 0 = "Nul" 0

SASBASE BDF Correction – EXERCICE N°2

PROC SORT DATA=exercice.bilans_2005 (WHERE=(FK > 0)) OUT=work.bilans05 ; BY DESCENDING FK ; RUN ;

SASBASE BDF Correction – EXERCICE N°1

PROC PRINT DATA=exercice.bilans_2005 (WHERE=(DI < 0 AND D26 = "EK")) ; RUN ;

SASBASE BDF EXERCICE N°1

Dans la bibliothèque EXERCICE vous trouvez des données sur les entreprises, dont leurs bilans. Sélectionnez dans BILANS_2005 les exercices comptables dont le résultat (colonne DI) est négatif, parmi les entreprises du secteur (D26) des transports (code EK) : il y en a 90.

SASBASE BDF EXERCICE N°9

Les descriptifs des fichiers sont ici. Créer un classeur Excel contenant les chiffres d’affaires France (FJ) moyens et médian selon le secteur (D26, en se limitant aux secteurs EA, EB et EC) et selon le fait que l’entreprise fasse du chiffre d’affaires à l’export (FK et le format déjà utilisé à l’exercice 5) pour les bilans de l’année 2005. On exportera trois tableaux : un par secteur, un selon le fait d’exporter et un croisant les deux critères.

SASBASE BDF EXERCICE N°8

Les descriptifs des fichiers sont ici. Importer le classeur BILANS_2004.XLSX dans une table SAS dans la bibliothèque WORK. Le classeur Excel se trouve dans le répertoire correspondant à la bibliothèque EXERCICE.

SASBASE BDF EXERCICE N°7

Les descriptifs des fichiers sont ici. Joindre les données BILANS_2005 et SIREN de manière à conserver tous les bilans et à ajouter quand c’est possible la date de création de l’entreprise et son département. Ne retenir dans le résultat que les entreprises alsaciennes (communes des départements du Haut Rhin et du Bas Rhin, commençant donc par 67 ou 68) dont le résultat est bénéficiaire (DI > 0). Il y en a 116. Note : on peut changer le nom d’une colonne […]

SASBASE BDF EXERCICE N°6

Les descriptifs des fichiers sont ici. Ajouter aux données SIREN deux nouvelles colonnes : le département avec les deux premiers caractères du code commune (COMMUNE) et l’ancienneté en années de l’entreprise à partir de DATECREATION. Pour cette dernière, les fonctions TODAY et YEAR vous permettront de faire les calculs (une entreprise créée en 1990 aura 31 ans d’ancienneté tout au long de l’année 2021). Exclure du résultat les entreprises qui ont une date de fermeture renseignée.

SASBASE BDF EXERCICE N°5

Les descriptifs des fichiers sont ici. Calculez les chiffres d’affaires France (FJ) moyen et médian selon le secteur d’activité (D26) et selon que l’entreprise exporte (FK > 0) ou non. Il est conseillé d’utiliser un format pour distinguer les entreprises exportatrices des autres.

SASBASE BDF EXERCICE N°4

Les descriptifs des fichiers sont ici. Compter à partir de BILANS_2005 le nombre d’entreprises et le pourcentage qu’elles représentent sur l’ensemble des données de bilans en fonction de leur secteur D26. On ne souhaite pas avoir de cumuls des fréquences ni des pourcentages dans le résultat. Par ailleurs, indiquez la répartition (fréquence et pourcentage au sein de chaque tranche de résultat) des bilans selon la tranche de résultat DI (utilisez le format créé à l’exercice 3) et le secteur (D26) ?

SASBASE BDF EXERCICE N°3

Les descriptifs des fichiers sont ici. Construire un format qui affiche les montants en trois tranches : négatif, nul et enfin positif.

SASBASE BDF EXERCICE N°2

Les descriptifs des fichiers sont ici. Trier par chiffre d’affaires à l’export (FK) décroissant les bilans de 2005 ; on ne retiendra pas les bilans où le chiffre d’affaires à l’export est nul. On ne trie donc que 2 439 bilans.

SASBASE BDF Exports (11 minutes)

  Par rapport aux exemples de la vidéo, les fichiers produits sur un serveur sont à stocker dans un répertoire de ce serveur. On ne peut pas lui indiquer une adresse locale (comme le c:/temp) ; en revanche on peut utiliser le chemin correspondant à une bibliothèque, SASUSER ou WORK. On écrit dans ce cas %SYSFUNC(PATHNAME(WORK)) en guise de répertoire, entre les guillemets du chemin. ODS EXCEL FILE= »%SYSFUNC(PATHNAME(WORK))/tableau de bord ventes.xlsx » STYLE=dove ; ODS PDF FILE= »%SYSFUNC(PATHNAME(WORK))/tableau de bord ventes.pdf » STYLE=meadow […]

SASBASE BDF Imports (11 minutes)

Par rapport aux exemples de la vidéo, les fichiers importés sur un serveur sont à stocker dans un répertoire de ce serveur. On ne peut pas lui indiquer une adresse locale (comme le c:/temp) ; en revanche on peut utiliser le chemin correspondant à une bibliothèque comme EXEMPLE. On écrit dans ce cas %SYSFUNC(PATHNAME(EXEMPLE)) en guise de répertoire, entre les guillemets du chemin. PROC IMPORT DATAFILE= »%SYSFUNC(PATHNAME(EXEMPLE))/produits.tab » OUT=work.produits DBMS=DLM REPLACE ; GETNAMES=YES ; DELIMITER= »09″x ; GUESSINGROWS=10000 ; RUN ;

ggplot2 Correction – EXERCICE N°10

library(ggplot2) library(formattable) # fonctions de mise en forme pourcent

ggplot2 Correction – EXERCICE N°9

library(ggplot2) ggplot(flats) + aes(y=neighbourhood_cleansed, fill=room_type) + geom_bar(position= »fill ») + scale_fill_manual(values=c(« Entire home/apt »= »yellow », « Private room »= »orange », « Shared room »= »gray »), name= »Type de location »)

ggplot2 Correction – EXERCICE N°8

library(ggplot2) library(patchwork) # composition de graphiques library(forcats) # gestion des facteurs histo

ggplot2 Correction – EXERCICE N°7

library(ggplot2) ggplot(flats) + aes(y=neighbourhood_cleansed, fill=room_type) + geom_bar(show.legend = FALSE) + facet_wrap(~room_type, scales = « free_x »)

ggplot2 Correction – EXERCICE N°6

library(tidyverse) # manipulation des données library(ggplot2) library(treemapify) # production de treemaps quartiers % group_by(neighbourhood_cleansed, room_type) %>% summarise(nb_logements = n()) %>% ungroup() ggplot(quartiers) + aes(area=nb_logements, label=neighbourhood_cleansed, subgroup=room_type, fill=room_type) + geom_treemap(start= »topleft ») + geom_treemap_text(start= »topleft »)

ggplot2 Correction – EXERCICE N°5

library(tidyverse) # manipulation des données library(lubridate) # manipulation des dates library(ggplot2) par_mois % group_by(mois = floor_date(as.Date(date), « months »)) %>% summarise(prix_moyen=mean(price)) %>% ungroup() ggplot(par_mois) + aes(x=mois, y=prix_moyen) + geom_line()

ggplot2 Correction – EXERCICE N°4

library(tidyverse) # manipulation des données library(ggplot2) library(ggrepel) # libellés intelligemment disposés quartiers % group_by(neighbourhood_cleansed) %>% summarise(nb_logements = n(), prix_moyen = mean(price), capacite_moyenne = mean(accommodates)) %>% ungroup() ggplot(quartiers) + aes(x=capacite_moyenne, y=prix_moyen, size=nb_logements, label=neighbourhood_cleansed) + geom_point(colour= »wheat ») + geom_text_repel()

ggplot2 Correction – EXERCICE N°3

library(tidyverse) # manipulation des données library(ggplot2) quartiers % group_by(neighbourhood_cleansed) %>% summarise(nb_logements = n(), prix_moyen = mean(price), capacite_moyenne = mean(accommodates)) %>% ungroup() ggplot(quartiers) + aes(x=capacite_moyenne, y=prix_moyen) + geom_point()

ggplot2 Correction – EXERCICE N°2

library(ggplot2) ggplot(flats) + aes(x=room_type, y=accommodates) + geom_boxplot() + geom_point(stat= »summary », fun=mean, shape=17, colour= »red », size=3)

ggplot2 Correction – EXERCICE N°1

library(ggplot2) ggplot(flats) + aes(y=neighbourhood_cleansed, fill=room_type) + geom_bar()

ggplot2 EXERCICE N°10

Pour l’ensemble des exercices vous utiliserez les données Airbnb décrites ici. Reprendre le graphique précédent et obtenir celui-ci. On pourra utiliser la fonction formattable::percent pour afficher les pourcentages. Pour réduire la marge à gauche des barres, regardez l’option expand des fonctions scale_x et scale_y.

ggplot2 EXERCICE N°9

Pour l’ensemble des exercices vous utiliserez les données Airbnb décrites ici. Produire le graphique suivant à partir des données flats. Le type de location qui sert à construire la légende est la colonne room_type.

ggplot2 EXERCICE N°8

Pour l’ensemble des exercices vous utiliserez les données Airbnb décrites ici. Produire le graphique suivant à partir des données flats.

ggplot2 EXERCICE N°7

Pour l’ensemble des exercices vous utiliserez les données Airbnb décrites ici. Produire le graphique suivant à partir des données flats.

ggplot2 EXERCICE N°6

Pour l’ensemble des exercices vous utiliserez les données Airbnb décrites ici. Produire le graphique suivant en agrégeant les données flats par quartier (neighbourhood_cleansed) et par type de location (room_type) pour calculer le nombre de logements.

ggplot2 EXERCICE N°5

Pour l’ensemble des exercices vous utiliserez les données Airbnb décrites ici. En agrégeant les données calendar par mois (utiliser la fonction lubridate::floor_date pour récupérer seulement le mois et l’année à partir de la variable date), produire le graphique suivant.

ggplot2 EXERCICE N°4

Pour l’ensemble des exercices vous utiliserez les données Airbnb décrites ici. Produire le graphique suivant en agrégeant les données flats par quartier (neighbourhood_cleansed) pour calculer le prix moyen des locations, le nombre de logements et la moyenne du nombre de personnes accueillies par logement (accommodates).

ggplot2 EXERCICE N°3

Pour l’ensemble des exercices vous utiliserez les données Airbnb décrites ici. Produire le graphique suivant en agrégeant les données flats par quartier (neighbourhood_cleansed) pour calculer le prix moyen des locations, le nombre de logements et la moyenne du nombre de personnes accueillies par logement (accommodates).

ggplot2 EXERCICE N°2

Pour l’ensemble des exercices vous utiliserez les données Airbnb décrites ici. Produire le graphique suivant à partir des données flats.

ggplot2 EXERCICE N°1

Pour l’ensemble des exercices vous utiliserez les données Airbnb décrites ici. Produire le graphique suivant à partir des données flats.  

ggplot2 Personnaliser un thème (14 minutes)

  library(ggplot2) library(lubridate) load (« c:/olivier/vins/vins.Rdata ») graphique <- ggplot(produits) + aes(x=couleur, fill=couleur) + geom_bar() # emplacements de légende : # extérieure graphique + theme(legend.position= »bottom ») # emplacements de légende : # intérieure graphique + theme(legend.position=c(0.25, 0.8)) # fond blanc, pas de quadrillage graphique + theme(panel.background= element_rect(fill= »white », colour= »black »), panel.grid=element_blank()) # légende encadrée, titres en gras graphique + theme(title = element_text(face = « bold »), legend.background = element_rect(color= »gray »)) # graduations d’axes graphique + theme(axis.ticks.x = element_blank(), axis.ticks.length = unit(2, »mm »)) # bouger le titre graphique + labs(title= »Nombre […]

ggplot2 Axes (23 minutes)

  library(ggplot2) load (« c:/olivier/vins/vins.Rdata ») # camembert amélioré ggplot(produits)+ aes(x=1, fill=couleur)+ geom_bar(width=1)+ coord_polar(theta= »y »)+ scale_y_continuous(labels=NULL, breaks=NULL, name=NULL)+ scale_x_continuous(labels=NULL, breaks=NULL, name=NULL) # soigner les axes ggplot(ventesMens) + aes(x=mois, y=ventes)+ geom_line() + scale_y_continuous( limits=c(0,1500), breaks=seq(0,1500,by=250) ) ggplot(ventesMens)+ aes(x=mois,y=ventes)+ geom_line()+ scale_y_continuous( limits = c(0,1500), breaks=0:6*250, minor_breaks = 0:30*50, name= »Quantités vendues par mois »)+ scale_x_date(name=NULL) ggplot(produits) + aes(y=couleur, x=prixTTC) + geom_bar(stat = « summary », fun = mean) + scale_x_continuous(labels=c(« zéro », « vingt », « quarante », « soixante »)) ggplot(produits) + aes(y=couleur, x=prixTTC) + geom_bar(stat= »summary », fun=max) + scale_x_continuous( labels=c(« zéro », « vingt », « quarante », « soixante ») ) ggplot(produits) + […]

ggplot2 Thèmes et couleurs (14 minutes)

  library(ggplot2) library(ggthemes) library(paletteer) load (« c:/olivier/vins/vins.Rdata ») # tests de thèmes prédéfinis graphique <- ggplot(produits) + aes(x=couleur, fill=couleur) + geom_bar() graphique + theme_bw() graphique + theme_dark() graphique + theme_light() graphique + theme_minimal() graphique + theme_classic() graphique + theme_economist() graphique + theme_clean() graphique + theme_few() graphique + theme_excel() graphique + theme_excel_new() graphique + theme_excel_new() + theme(legend.position= »top ») barres <- ggplot(produits[ which(grepl(« ^B »,produits$region)),])+ aes(x=couleur, fill=region)+ geom_bar() # couleurs par défaut barres # séquentiel par défaut barres + scale_fill_brewer() barres + scale_fill_brewer(type= »div ») barres + scale_fill_brewer(type= »div », palette=2) […]

ggplot2 Légendes (18 minutes)

  library(ggplot2) library(lubridate) load (« c:/olivier/vins/vins.Rdata ») # légende pour les marqueurs ggplot(produits)+ aes(y=region, x=prixTTC, shape=couleur)+ geom_point(stat= »summary », fun = mean)+ scale_shape_manual( name= »Couleur du vin », labels=c(« Vin blanc », « Vin rouge »), values=c(21, 15)) # légende pour les types de traits v <- ventesMens v$yy <- factor(year(v$mois)) v$mm <- month(v$mois) v <- v[which(v$yy %in% c(2000,2001)),] ggplot(v)+ aes(x=mm, y=ventes, linetype=yy)+ geom_line()+ scale_linetype_manual( name= »Année\nde vente », values=c(« 2000″= »solid », « 2001 »= »longdash »)) # graphique sans légende ggplot(produits)+ aes(x=couleur, fill=couleur)+ geom_bar(show.legend = FALSE) # aspect de la légende ggplot(produits) + aes(x=region, fill=couleur) + geom_bar() […]

ggplot2 Coordonnées (9 minutes)

  library(ggplot2) load (« c:/olivier/vins/vins.Rdata ») # zoom ggplot(ventesMens) + aes(x=mois, y=ventes) + geom_line() + coord_cartesian(ylim=c(700,1400)) # un graphique « carré » ggplot(ventesMens) + aes(sample=ventes) + geom_qq(dparams=list(mean=mean(ventesMens$ventes), sd = sd(ventesMens$ventes))) + geom_abline(slope=1, intercept = 0) + coord_fixed() # barres verticales -> horizontales ggplot(produits)+ aes(x=region)+ geom_bar()+ coord_flip() # barre unique… ggplot(produits)+ aes(x=1, fill=couleur)+ geom_bar() # … devient un camembert ggplot(produits)+ aes(x=1, fill=couleur)+ geom_bar(width=1)+ coord_polar(theta= »y »)

ggplot2 Composition (7 minutes)

  library(ggplot2) library(patchwork) library(grid) # pour insertion de textes dans patchwork load (« c:/olivier/vins/vins.Rdata ») p1 <- ggplot(produits) + aes(x=couleur, y=prixTTC) + geom_boxplot() p2 <- ggplot(produits) + aes(x=couleur, y=prixTTC) + geom_bar(stat= »summary », fun= »mean ») + ggtitle(« Prix moyen ») p3 <- ggplot(produits) + aes(x=couleur, y=prixTTC) + geom_bar(stat= »summary », fun= »max ») + ggtitle(« Prix max ») p4 <- ggplot(produits) + aes(x=couleur, y=prixTTC) + geom_bar(stat= »summary », fun= »median ») + ggtitle(« Prix médian ») # côte à côte p2 + p3 # empilés p1 / p2 # en quadrillage (p1+p2)/(p3+p4) (p1)/(p2+p3+p4) # avec un titre commun (p2+ […]

ggplot2 Multiples (12 minutes)

  library(ggplot2) library(lubridate) load (« c:/olivier/vins/vins.Rdata ») # éclatement optimisé ggplot(produits[produits$region != « Bordeaux »,])+ aes(x=couleur)+ geom_bar()+ coord_flip()+ facet_wrap(~region) # en 3 colonnes * 4 lignes ggplot(produits[produits$region != « Bordeaux »,])+ aes(x=couleur)+ geom_bar()+ coord_flip()+ facet_wrap(~region, nrow=4, ncol=3) # en 2 colonnes * 6 lignes ggplot(produits[produits$region != « Bordeaux »,])+ aes(x=couleur)+ geom_bar()+ coord_flip()+ facet_wrap(~region, nrow=6, ncol=2) # comparaisons facilitées ventesMens$yy <- year(ventesMens$mois) ventesMens$mm <- month(ventesMens$mois) ggplot(ventesMens)+ aes(x=mm, y=ventes)+ geom_line() + facet_wrap(~yy, ncol=1, strip.position = « left ») # échelles coordonnées ou non ggplot(produits)+ aes(x=prixTTC)+ geom_histogram()+ facet_wrap(~couleur) ggplot(produits)+ aes(x=prixTTC)+ geom_histogram()+ facet_wrap(~couleur, scales= »free_y ») […]

ggplot2 Traitements statistiques (6 minutes)

library(ggplot2) load (« c:/olivier/vins/vins.Rdata ») # barres en fonction de la moyenne ggplot(produits[ produits$millesime>1980,])+ aes(x=millesime, y=prixTTC)+ stat_summary( fun=mean, geom= »bar ») # variantes sur le type de graphique ggplot(produits[ produits$millesime>1980,])+ aes(x=millesime, y=prixTTC)+ stat_summary( fun=mean, geom= »line ») ggplot(produits[ produits$millesime>1980,])+ aes(x=millesime, y=prixTTC)+ stat_summary( fun=mean, geom= »point ») ggplot(produits[ produits$millesime>1980,])+ aes(x=millesime, y=prixTTC)+ stat_summary( fun=mean, geom= »step ») # tranches en fonction de la moyenne ggplot(produits[ produits$millesime>1980,])+ aes(x=millesime, y=prixTTC)+ stat_summary_bin( fun=mean, geom= »bar »)

ggplot2 Références (7 minutes)

  library(ggplot2) load (« c:/olivier/vins/vins.Rdata ») # histogramme avec moyenne ggplot(produits)+ aes(x=prixTTC)+ geom_histogram()+ geom_vline(xintercept= mean(produits$prixTTC)) # courbe avec moyenne générale ggplot(ventesMens)+ aes(x=mois, y=ventes)+ geom_line()+ geom_hline(yintercept = mean(ventesMens$ventes)) # QQ plot ggplot(ventesMens) + aes(sample=ventes) + geom_qq(dparams=list(mean=mean(ventesMens$ventes), sd = sd(ventesMens$ventes))) + geom_abline(slope=1, intercept = 0)

ggplot2 Treemaps (14 minutes)

  library(treemapify) library(ggplot2) load(« c:/olivier/vins/vins.Rdata ») bordeaux <- produits[which(produits$region == « Bordeaux »),] treemap <- aggregate(numCatalogue ~ AOC, bordeaux, FUN=length) ggplot(treemap) + aes(area=numCatalogue, label=AOC) + geom_treemap(start= »topleft ») + geom_treemap_text(start= »topleft ») treemap2 <- aggregate(numCatalogue ~ AOC + couleur, bordeaux, FUN=length) ggplot(treemap2) + aes(area=numCatalogue, label=AOC, fill=couleur, subgroup=couleur) + geom_treemap(start= »topleft », show.legend = FALSE) + geom_treemap_text(start= »topleft ») + geom_treemap_subgroup_border(show.legend = FALSE) + geom_treemap_subgroup_text()

ggplot2 Radars (6 minutes)

  library(ggiraphExtra) library(reshape2) radar <- dcast(produits[which(produits$millesime %in% 1990:2000),], couleur ~ millesime, value.var= »prixTTC », fun.aggregate = mean) ggRadar(data=radar, aes(group=couleur), rescale=FALSE) ggRadar(data=radar, aes(group=couleur, facet=couleur), rescale=FALSE, ylim=c(0,250), size=-Inf) + theme(legend.position = « none »)

ggplot2 Courbes (10 minutes)

  library(ggplot2) library(lubridate) load (« c:/olivier/vins/vins.Rdata ») # courbe simple ggplot(ventesMens)+ aes(x=mois,y=ventes)+ geom_line() # aspect : couleur, épaisseur ggplot(ventesMens)+ aes(x=mois, y=ventes)+ geom_line(colour= »orange », size=2) # aspect : motif du trait ggplot(ventesMens)+ aes(x=mois, y=ventes)+ geom_line(linetype= »dotted ») # courbe en escalier ggplot(ventesMens)+ aes(x=mois, y=ventes)+ geom_step() # interruption s’il y a des NA mens <- ventesMens[1:10,] mens[6, »ventes »] <- NA ggplot(mens[-6,]) + aes(x=mois, y=ventes)+ geom_line() + geom_point() ggplot(mens) + aes(x=mois, y=ventes)+ geom_point()+ geom_line() # plusieurs courbes ggplot(ventesMens)+ aes(x=month(mois), y=ventes, colour=factor(year(mois)))+ geom_line() # nuage de points avec régression ggplot(ventesMens)+ […]

ggplot2 Nuages de points (9 minutes)

  library(ggplot2) load (« c:/olivier/vins/vins.Rdata ») # nuage de points ggplot(produits)+ aes(x=millesime, y=prixTTC)+ geom_point() # nuage de points avec transparence ggplot(produits)+ aes(x=millesime, y=prixTTC)+ geom_point(alpha=1/10) # avec un zoom sur les millésimes récents ggplot(produits[which(produits$millesime > 1980),]) + aes(x=millesime, y=prixTTC) + geom_point(alpha=1/10) # geom_jitter permet d’avoir des éparpillements aléatoires # pour les points ex-aequos ggplot(produits[which(produits$millesime > 1980),]) + aes(x=millesime, y=prixTTC) + geom_jitter(alpha=1/10) # nuage de stats stats1 <- aggregate(prixTTC ~ millesime, produits, FUN=mean) stats2 <- aggregate(prixTTC ~ millesime, produits, FUN=length) stats <- merge(stats1, stats2, […]

ggplot2 Boîtes à moustaches (15 minutes)

  library(ggplot2) load (« c:/olivier/vins/vins.Rdata ») # une seule boxplot ggplot(produits)+ aes(y=prixTTC)+ geom_boxplot() # une boxplot par groupe regionB <- produits[which(grepl(« ^B »,produits$region)),] ggplot(regionB)+ aes(x=region,y=prixTTC)+ geom_boxplot() # boxplots côte à côte par groupe ggplot(regionB)+ aes(x=region, y=prixTTC, fill=couleur)+ geom_boxplot() # boxplots à corset ggplot(regionB)+ aes(x=couleur, y=prixTTC)+ geom_boxplot(notch = TRUE) # boxplots de largeur f°(obs) ggplot(regionB)+ aes(x=couleur, y=prixTTC)+ geom_boxplot(varwidth = TRUE) # points atypiques ggplot(produits)+ aes(x=couleur, y=prixTTC)+ geom_boxplot(outlier.shape=2, outlier.color= »orange ») # croisillons en bouts de moustaches ggplot(produits)+ aes(x=couleur, y=prixTTC)+ geom_errorbar(stat= »boxplot », width=0.1)+ geom_boxplot() # avec la moyenne en […]

ggplot2 Histogrammes (6 minutes)

  library(ggplot2) load (« c:/olivier/vins/vins.Rdata ») ggplot(data=produits)+ aes(x=prixTTC)+ geom_histogram() ggplot(data=produits)+ aes(x=prixTTC)+ geom_histogram(bins=10) ggplot(data=produits)+ aes(x=prixTTC)+ geom_histogram(bins=20,aes(y=..density..))+ geom_density()

ggplot2 Bâtons (19 minutes)

  library(ggplot2) library(lubridate) library(forcats) load (« c:/olivier/vins/vins.Rdata ») # barres d’effectifs par couleur ggplot(data=produits)+ aes(x=couleur)+ geom_bar() # idem avec une couleur spécifiée ggplot(data=produits)+ aes(x=couleur)+ geom_bar(fill= »orange ») # idem avec une couleur par barre ggplot(data=produits)+ aes(x=couleur, fill=couleur)+ geom_bar() # avec weight on calcule des sommes # nombre d’items vendus par an ggplot(data=ventesMens)+ aes(x=factor(year(mois)), weight=ventes)+ geom_bar() regionB <- produits[grep(« ^B », produits$region),] # barres empilées ggplot(data=regionB)+ aes(x=region, fill=couleur)+ geom_bar() # barres côte à côte ggplot(data=regionB)+ aes(x=region, fill=couleur)+ geom_bar(position= »dodge ») # barres empilées 100% ggplot(data=regionB)+ aes(x=region,fill=couleur)+ geom_bar(position= »fill ») # avec […]

ggplot2 Géométries (5 minutes)

 

ggplot2 Fonctions ggplot et aes (7 minutes)

 

ggplot2 Principes (21 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 BDF Correction – EXERCICE N°11

count_distinct

SAS2R BDF Correction – EXERCICE N°10

# paramètre : secteur —- secteur

SAS2R BDF Correction – EXERCICE N°9

library(openxlsx) classeur

SAS2R BDF Correction – EXERCICE N°8

demenageurs

SAS2R BDF Correction – EXERCICE N°7

# packages utiles —- library(lubridate) # gestion des dates # type de la colonne siren$dateCreation —- class(siren$dateCreation) # elle est de type caractère # conversion en Date et ancienneté —- siren$DATE_CREA

SAS2R BDF Correction – EXERCICE N°6

library(readxl) bilans_2004

SAS2R BDF Correction – EXERCICE N°5

library(dplyr) bilans_2005 %>% filter(D5 == 12) %>% group_by(D26) %>% summarise(nb_bilans = n(), ca_median = median(FJ+FK)) %>% ungroup() %>% arrange(desc(ca_median)) %>% slice(1:5)

SAS2R BDF Correction – EXERCICE N°4

nb_par_secteur

SAS2R BDF Correction – EXERCICE N°3

CA_france_moyen 10000),]

SAS2R BDF Correction – EXERCICE N°2

# commerces déficitaires en 2005—- commerces_deficitaires

SAS2R BDF Correction – EXERCICE N°1

library(haven) bilans_2005

SAS2R BDF EXERCICE N°11

Créer deux fonctions ayant un vecteur pour argument. La première (count_distinct) compte le nombre de valeurs distinctes du vecteur ; la seconde (nmiss) compte les valeurs manquantes dans le vecteur. Tests : count_distinct(bilans_2005$D26)  # doit répondre 16 nmiss(bilans_2005$FJ / bilans_2005$FK) # doit répondre 181

SAS2R BDF EXERCICE N°10

Paramétrer le secteur d’activité (sur 2 lettres majuscules commençant par un E) et calculer pour ce secteur (D26) le chiffre d’affaires France (FJ) médian en 2005.

SAS2R BDF EXERCICE N°9

Créer un classeur Excel à partir des bilans_2005 avec un onglet par secteur (colonne D26) et dans chaque onglet, la liste des bilans de ce secteur.

SAS2R BDF EXERCICE N°8

Créer un data.frame contenant les bilans des entreprises de déménagement (code activité D23 valant 602N) toujours actives (colonne etat dans siren) à partir de siren et bilans_2004. Ils doivent être 10.

SAS2R BDF EXERCICE N°7

Dans l’objet siren on trouve la date de création de l’entreprise dans dateCreation. Quel est son type ? En dériver une colonne DATE_CREA de type Date. S’en servir pour calculer l’ancienneté de l’entreprise (la stocker dans la colonne ANC) par rapport à la date du jour.

SAS2R BDF EXERCICE N°6

Importer les fichiers bilans_2004.xlsx dans un objet bilans_2004 et siren.csv (ce dernier est un fichier à séparateur point-virgule) dans un objet siren.

SAS2R BDF EXERCICE N°5

A partir des données bilans_2005, calculer par secteur (D26) le nombre de bilans établis sur douze mois (durée en mois : D5) et la médiane du chiffre d’affaires de ces bilans (chiffre d’affaires : somme de FJ et FK). Ne lister que les 5 secteurs correspondant aux médianes les plus élevées.

SAS2R BDF EXERCICE N°4

Compter le nombre de bilans_2005 par secteur (colonne D26), ne retenir que les secteurs qui représentent au moins 5% du total.

SAS2R BDF EXERCICE N°3

Quel est le chiffre d’affaires (CA) France moyen (FJ) des bilans_2005 par secteur d’activité (D26) ? Quels sont les secteurs où les CA moyens dépassent 10000 k€ ?

SAS2R BDF EXERCICE N°2

Créer un objet commerces_deficitaires à partir des bilans_2005 dont le résultat (DI) est négatif et dont le secteur d’activité (D26) est EJ. (383 obs) Créer un objet services des bilans 2005 d’entreprises ayant un secteur d’activité (D26) dans les services (valeurs EN et EP) à partir du data.frame bilans_2005. (1683 obs)

SAS2R BDF EXERCICE N°1

Les descriptifs des fichiers sont ici.   Créer un objet bilans_2005 à partir de la table SAS bilans_2005.sas7bdat.

Test d’accessibilité aux différents éléments d’une leçon

Bonjour et bienvenue sur cette page de test. Ci-dessous deux éléments sont inclus : tout d’abord un support PowerPoint, puis une vidéo. Le test consiste à savoir si l’un et l’autre s’affichent à votre écran et si vous pouvez naviguer dans le PPT et lire la vidéo. Le PowerPoint :   Il comporte 7 diapositives.   La vidéo : Elle dure quasiment 16 minutes. Son sujet n’est pas le même que le PowerPoint.   Voilà, le test est terminé, merci.

RBASE BDF Imports (15 minutes)

IMPORTANT : dans l’environnement Banque de France il faut ajouter à tous les imports avec la fonction read.delim l’option fileEncoding= »WINDOWS-1252″. Le code ci-dessous montre comment l’intégrer. # répertoire par défaut —- setwd(« c:/olivier/airbnb ») # imports —- houses <- read.delim(« houses.csv », sep = « , », stringsAsFactors = FALSE, fileEncoding= »WINDOWS-1252″ ) flats <- read.delim(« flats.csv », sep = « , », stringsAsFactors = FALSE, fileEncoding= »WINDOWS-1252″ ) library(readxl) # import de classeurs Excel other <- read_excel(« other.xlsx ») calendar <- read.delim(« calendar.csv », sep = « , », stringsAsFactors = FALSE) library(haven) # import de fichiers […]

données BDF SAS Présentation des données Banque de France

Les données sont disponibles dans la bibliothèque EXERCICE de votre serveur SAS. Elles consistent en 3 fichiers : bilans_2004 qui est un classeur Excel (xlsx), bilans_2005 une table SAS, et siren une autre table SAS. Seules les deux tables SAS sont visibles dans la bibliothèque EXERCICE. Les noms des colonnes dans les tables bilans sont ceux des rubriques des « liasses fiscales », des imprimés administratifs utilisés pour déclarer le bilan comptable d’une entreprise à l’administration.   Bilans_2004 et Bilans_2005   Deux […]

SEG Correction – EXERCICE N°10

Créer une invite (en bas à gauche, avec le symbole à droite de SERVEURS puis le bouton AJOUTER). Dans l’onglet TYPE ET VALEURS DE L’INVITE, choisir comme METHODE D’ALIMENTATION DE L’INVITE une SELECTION DANS UNE LISTE STATIQUE. Cliquer ensuite sur le bouton OBTENIR VALEURS en bas à droite, choisir la table SIREN comme SOURCE DE DONNEES, la colonne DEPT et OBTENIR VALEURS. Bien penser à cliquer sur la flèche double pour basculer toutes les valeurs dans la liste en bas […]

SEG EXERCICE N°10

Les descriptifs des fichiers sont ici. Avec une invite, paramétrer une requête sur le département pour qu’elle indique combien d’entreprises de la table SIREN (= nombre de lignes dans la table) ont fermé par an depuis 2005. Ci-dessous la réponse pour l’Aisne.