# Tips R [TOC] * Si vous voulez vous identifier, vous pouvez commencer la ligne par [color=unnomdecouleur]. Ca donnera : [color=purple] Un commentaire de Violaine. [color=pink] Un commentaire de Steven. [color=yellow] Un commentaire de Rachel. [color=green] Un commentaire de Perrine. ## Fonctions des packages ### Library **tidyr** * fonction **contains** [color=yellow] utilisé pour selectionner des variables qui contiennent une certaine chaine de caractère > Exemple : ``` ma_table %>% select (contains ("_TOT")) ``` => *Selectionne toutes les variables qui contiennent "_TOT"* * fonction **pivot_wider** [color=yellow] transpose en colonne une variable (ex-fonction spread). Il faut penser à faire un arrange au préalable (pour avoir les années dans l'ordre par exemple) et remplacer les NA par 0 ci-besoin > Exemple : ``` ma_table <- ma_table_entree %>% arrange (ANNEE, I_ELST) %>% pivot_wider(names_from = ANNEE, values_from = NB_TERM,values_fn = sum) ``` => *Transpose l'année en colonne et agrége les données par année et juridiction ### Library **tidyselect** * fonction **peek_vars** [color=yellow] utilisé pour ordonner les variables par ordre alphabétique > Exemple : ``` ma_table %>% select(sort(peek_vars())) ``` ## Fonctions personnalisées * fonction **pourcentage insécable** [color=yellow] utilisé pour créer un espace insecable entre le chiffre et le % (pour plus d'esthétique dans les tableaux de sortie) ``` percent_insec <- function(x) { if (length(x) == 0) return(character()) x <- plyr::round_any(x, scales:::precision(x)/100) paste0(scales::comma(x * 100), "\u00a0%") } ``` # A METTRE EN FORME ## nouvelle fonction meta getMeta(conn_pg, ident_q("mad_perm.cdad323") ) ## Récupérer les meta quand on n'a pas les meta cdad_vue_diffusion_2022 <- dbSendQuery(pg_conn_test, paste0("SELECT * from mad_perm.cdad322")) liste_variables <- dbColumnInfo(cdad_vue_diffusion_2022) ## connexion environnement de dev drv <- dbDriver("Oracle") conn_dev <- dbConnect(drv, dbname="DEV10", username="enquete", password="enquete") ## Rmardown knitr::opts_chunk$set(echo = FALSE) #echo=false masque le code au knitr *<span style="color:orange">ORANGE</span>** pour mettre de la couleur dans le texte ## Packages library(dplyr) library(dbplyr) → surcouche de dplyr, permet la manipulation de données directement depuis la base library(knitr) ## Connections Oracle PostGre conn_ora <- connectOraSDSE(dbname = "PROD10") conn_pg <- connectPostgreSDSE(dbname = "prod") dbDisconnect(conn_ora) ## Analyse mémoire HTOP → pour regarder la mémoire utilisée par l’ensemble des utilisateurs Mémoire ```{r memoryusage} Table1_MEM <- object.size(Table1_MEM) Table2_MEM <- object.size(Table2_MEM) TOTAL_MEM <- Table1_MEM + Table2_MEM ``` ## Lire les données v_tutimaj_affaires <- tbl(conn_ora, in_schema("TI", "VM_TUTIMAJ_AFFAIRES")) ## Fonctions meta {RDSE} Permet d’avoir le libellé des variables show_query {dplyr} Permet de regarder la requête SQL lancée ex : pointeur %>% show_query() collect {dplyr} Affiche les données du pointeur dans une table bind_rows(t1, t2, t3) bind_rows(table1 = t1, table2 = t2, table3 = t3, .id = "source") ## Requêtes habituelles DplyR test <- vm_tutimaj_affaires %>% filter(I_ELST == '00100598') %>% select(I_ELST, RANG, DADEC, NIA) %>% head(10) appariement <- table1 %>% left_join(table2 %>% select (variables qui m'intéressent), by = c("I_ELST")) kable(p_appariement %>% collect()) test2 <- test %>% select(TUS, NATAFF, MODFIN) %>% group_by(NIA) %>% summarise (nb= n()) %>% arrange(desc(nb)) ## Raccourcis CTRL + M = crée le pipe %>% CTRL + MAJ + C = Enlève les # du code ## Opérateurs logiques & et logique | ou logique ## Remplacer NA par 0 nom_table[is.na(nom_table)] <- 0 ## Sélection de plusieurs modalités %in% c(a,b,c) ## Créer une variable à partir d’une variable dttm library(lubridate) year(DASAI) 2013-07-11 00:00:00 ---→ 2013 ANSAI=paste(year(DASAI),month(DASAI),sep="-") ---→ 20137 ## Convertir charactère en date as.Date("20090131", "%Y%m%d") → ## Retrait de certaines variables table %>% select(-VARIABLE) select (-c(VAR1, VAR2, VAR3)) filter (!VARIABLE %in% c("MOD1","MOD2","MOD3")) Retrait des 3 derniers caractères du NUMERO (sans rang) mutate (ID_UNIQUE=strtrim(NUMERO,(nchar(NUMERO)-3))) ## Filtre entre deux variables test <- NB_NOUV %>% filter (I_ELST %between% c('00100798','00100817')) (package data.table) ## Différence en mois entre deux dates ::lubridate interval(date1, date2) %/% months(1) en mettant les dates en as.Date au préalable ## Recherche des différences entre deux fichiers library(diffr) diffr('0_script_general_2021.R', '0_script_general.R')