# 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')