--- title: "Flux d'import avec pmeasyr" author: "Guillaume Pressiat" date: 07/03/2017 output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Import flow with pmeasyr} %\VignetteEngine{knitr::rmarkdown} \usepackage[utf8]{inputenc} --- ```{r eval = F} library(pmeasyr) library(dplyr, warn.conflicts = F) ``` ## 1 - Definir un noyau de parametres ```{r eval = F} p <- noyau_pmeasyr( finess = '750100042', annee = 2015, mois = 12, path = '~/Documents/data/mco', progress = F) ``` On precise avec `progress = F` le fait que l'on ne veut pas de barre de progression lors de la lecture des fichiers. En partant de ces parametres a gauche et en ecrivant les appels de fonctions a droite, avec `%>%` et les fonctions de *pmeasyr*, on rend le script plus lisible, et on profite du côte "humain" de la programmation `%>%`. ## 2 - Dezipper Par defaut la fonction `adezip()` dezippe la totalite des fichiers de l'archive PMSI, on pourra egalement effacer tous les fichiers avec `adelete()`. ```{r eval = F} # Tout dezipper # out p %>% adezip(type = "out") # in p %>% adezip(type = "in") ``` ## 3 - Importer ### Syntaxe explicite On importe toutes les tables du MCO, la syntaxe est plus concise et va de gauche à droite : ```{r eval = F} # out p %>% irsa() -> rsa p %>% iano_mco() -> ano_out p %>% iium() -> ium p %>% idiap() -> diap_out p %>% imed_mco() -> med_out p %>% idmi_mco() -> dmi_out p %>% ipo() -> po_out p %>% ileg_mco() -> leg p %>% itra() -> tra # rsa type 6 : p %>% irsa(typi = 6) -> rsa # rsa d'une autre annee : p %>% irsa(annee = 2016) -> rsa # rsa d'une autre annee, lire les dix premiers rsa : p %>% irsa(annee = 2016, n_max = 10) -> rsa # in p %>% irum() -> rum p %>% iano_mco(typano = "in") -> ano_in p %>% imed_mco(typmed = "in") -> med_in p %>% idmi_mco(typdmi = "in") -> dmi_in p %>% idiap(typdiap = "in") -> diap_in p %>% ipo(typpo = "in") -> po_in ``` ### Importer plusieurs annees avec une boucle On dezippe et on importe les rsa de 2011 a 2015. Les rsa seront dans l'environnement R avec comme nom : ```{r eval = F} rsa_2011 rsa_2012 rsa_2013 rsa_2014 rsa_2015 ``` ```{r eval = F} p <- noyau_pmeasyr( finess = '750100042', mois = 12, path = "~/Documents/data/mco", progress = F ) for (i in 2011:2015){ p %>% adezip(annee = i, type = "out", liste = "rsa") p %>% irsa(annee = i) -> temp assign(paste("rsa", i, sep = "_"), temp) } ``` On peut aussi envisager un import mois par mois si besoin, ou boucler sur une liste de finess (entites geographiques). ### Appel de fonctions Pour l'exemple, on utilise ci-dessous `sapply()` a la liste des fonctions MCO *out*, en appelant toutes les fonctions, on cree ainsi un objet contenant toutes les tables du MCO *out*. ```{r eval = F} # On liste les fonctions MCO du package : fout <- c('irsa', 'iano_mco', 'iium', 'idiap', 'imed_mco', 'idmi_mco', 'ipo', 'ileg_mco', 'itra') sapply(fout, function(x)get(x)(p)) -> liste_tables_mco_out names(liste_tables_mco_out) # enlever les i des noms des tables names(liste_tables_mco_out) <- substr(names(liste_tables_mco_out),2, nchar(names(liste_tables_mco_out))) ``` ```{r eval = F} rsa ano_mco ium diap med_mco dmi_mco po leg_mco tra ``` ## 4 - Sauvegarde (~ library Rds) ```{r eval = F} # Coller des chaines de caracteres facon pipe `%+%` <- function(x,y){paste0(x,y)} dir.create(p$path %+% '/tables') ``` Le repertoire suivant est cree : ```{r eval = F} '~/Documents/data/mco/tables/' ``` ```{r eval = F} nom <- p$finess %+% '.' %+% p$annee %+% '.' %+% p$mois %+% '.' %+% 'out' %+% '.' %+% 'rds' saveRDS(liste_tables_mco_out, p$path %+% '/tables/' %+% nom) ``` Le fichier rds se nomme : ```{r eval = F} 750100042.2015.12.out.rds ``` ## 5 - Effacer ```{r eval = F} # Tout effacer sauf les zip : p %>% adelete() ``` ## 6 - Relire les tables sauvegardees en rds Avec le noyau de parametres `p` defini tout en haut de cette page, on a les elements necessaires pour reconstruire le nom du fichier : `750100042.2015.12.out.Rds` : ```{r eval = F} # Coller des chaines de caracteres faon pipe `%+%` <- function(x,y){paste0(x,y)} # Le fichier se nomme : 750100042.2015.12.out.Rds nom <- p$finess %+% '.' %+% p$annee %+% '.' %+% p$mois %+% '.' %+% 'out' %+% '.' %+% 'Rds' readRDS(p$path %+% '/tables/' %+% nom) -> mydata View(mydata$rsa$rsa) View(mydata$rsa$actes) View(mydata$leg_mco) ``` Les donnees sont de nouveau dans l'environnement R.