Le fichier rsfa
peut être volumineux car il contient tous les types de rafael (débuts de factures, actes externes, ATU, consultations, …). Or il est rare d’avoir à utiliser tous les types de rafael en même temps dans un seul projet.
Plutôt que de tout importer dans R et donc charger trop de données (c.-à.-d. remplir la mémoire vive inutilement), on peut :
- spécifier à pmeasyr que l’on ne souhaite pas garder tous les types de rsfa en mémoire dans R
- diviser le fichier d’origine
rsfa
en plusieurs fichiers selon leur type avec python
Ce notebook détaille comment le faire en associant pmeasyr à un script Python, chose possible dans un même programme à l’aide des Notebook .Rmd de RStudio.
Dézipage des fichiers rsfa et rsfa-maj
Avec le package pmeasyr on dézippe depuis un script R les fichiers rsfa
et rsfa_maj
.
########### Script R
########### ########
library(pmeasyr)
adezip(finess = '750712184',
annee = 2015,
mois = 12,
path = '~/Documents/data/rsf',
type = "out",
liste = c('rsfa', 'rsfa-maj'))
Dézippage archive
Type : out
Finess : 750712184
Période : 2015 M12
Fichiers : rsfa rsfa-maj
Solution uniquement avec pmeasyr
Le paramêtre lister
de la fonction ìrafael()
permet de lister le type de rafael que l’on souhaite importer dans R
irafael('750712184', '2015', '12', '~/Documents/data/rsf/', progress = F, lister = c('C', 'M')) -> rafael
Solution en passant par python
Vérifier le path dans python
Changer de path dans un Notebook n’est pas conseillé, on vérifie que l’on est bien dans le répertoire où sont les fichiers.
########### Script Python
########### #############
import os
print(os.path.abspath(''))
/Users/guillaumepressiat/Documents/data/rsf
Fonction de split du fichier rsfa par type de rsf (A, B, C, M, …)
La fonction permet de créer un nouveau fichier ne contenant que le type de rsf que l’on souhaite étudier.
########### Script Python
########### #############
import os
# Fonction de split du fichier rsfa
def split_rsfa(filtre, path, finess, annee, mois, type):
# Gestion des chemins (a adapter pour windows)
# Fichier rsfa au depart
filin = '/'.join((path, '.'.join((finess, annee, mois, type))))
# Fichier rsfa filtre en sortie, on accole au finess le type de rsfa, ex: finess_C
filout = '/'.join((path, '.'.join((finess + '_' + filtre, annee, mois, type))))
# Pour chaque ligne du fichier d'entree on teste le type d'enregistrement A, B, C... selon
# que le fichier soit .rsfa ou .rsfa-maj, donc en colonne 9 ou 27 du fichier texte
fout = open(filout, 'w')
for line in open(filin):
if type == 'rsfa':
if line[8] == filtre:
fout.write(line)
if type == 'rsfa-maj':
if line[26] == filtre:
fout.write(line)
fout.close()
# Execution dans notre cas pour un fichier place ici :
chemin = os.path.abspath('')
# Exemple pour les rsfa C et M sur les deux types de fichiers (rsfa et/ou rsfa-maj)
for i in ['C', 'M']:
split_rsfa(i, chemin, '750712184','2015', '12', 'rsfa')
print('Split des rsfa ' + i + ' ok')
#split_rsfa(i, chemin, '750712184','2015', '12', 'rsfa-maj')
Split des rsfa C ok
Split des rsfa M ok
Les fichiers produits
Vérifier les fichiers tout juste produits.
########### Script R
########### ########
list.files() -> fichiers
cat(fichiers[grepl('\\.rsfa', fichiers)], sep = "\n")
750712184_C.2015.12.rsfa
750712184_C.2015.12.rsfa-maj
750712184_M.2015.12.rsfa
750712184_M.2015.12.rsfa-maj
750712184.2015.12.rsfa
750712184.2015.12.rsfa-maj
Import dans R avec pmeasyr
L’import des rsf type par type est plus leger ensuite dans R :
########### Script R
########### ########
library(pmeasyr)
# Import de la table des actes CCAM en externes uniquement
irafael('750712184_M', '2015', '12', '~/Documents/data/rsf/', progress = F, lister = 'M')$M -> rafael_M
Cette approche évite d’alourdir les fichiers lus par pmeasyr et allège donc les traitements.
27/02/2017
retour
LS0tCnRpdGxlOiAiU3BsaXQgZGVzIFJTRkEgcGFyIHR5cGUgZCdlbnJlZ2lzdHJlbWVudCIKYXV0aG9yOiBHIFByZXNzaWF0CmRhdGU6IDI3LzAyLzIwMTcKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCkxlIGZpY2hpZXIgYHJzZmFgIHBldXQgw6p0cmUgdm9sdW1pbmV1eCBjYXIgaWwgY29udGllbnQgdG91cyBsZXMgdHlwZXMgZGUgcmFmYWVsIChkw6lidXRzIGRlIGZhY3R1cmVzLCBhY3RlcyBleHRlcm5lcywgQVRVLCBjb25zdWx0YXRpb25zLCAuLi4pLiBPciBpbCBlc3QgcmFyZSBkJ2F2b2lyIMOgIHV0aWxpc2VyIHRvdXMgbGVzIHR5cGVzIGRlIHJhZmFlbCBlbiBtw6ptZSB0ZW1wcyBkYW5zIHVuIHNldWwgcHJvamV0LgogIApQbHV0w7R0IHF1ZSBkZSB0b3V0IGltcG9ydGVyIGRhbnMgUiBldCBkb25jIGNoYXJnZXIgdHJvcCBkZSBkb25uw6llcyAoYy4tw6AuLWQuIHJlbXBsaXIgbGEgbcOpbW9pcmUgdml2ZSBpbnV0aWxlbWVudCksIG9uIHBldXQgOgoKLSBzcMOpY2lmaWVyIMOgICpwbWVhc3lyKiBxdWUgbCdvbiBuZSBzb3VoYWl0ZSBwYXMgZ2FyZGVyIHRvdXMgbGVzIHR5cGVzIGRlIHJzZmEgZW4gbcOpbW9pcmUgZGFucyBSCi0gZGl2aXNlciBsZSBmaWNoaWVyIGQnb3JpZ2luZSBgcnNmYWAgZW4gcGx1c2lldXJzIGZpY2hpZXJzIHNlbG9uIGxldXIgdHlwZSBhdmVjIHB5dGhvbgoKQ2Ugbm90ZWJvb2sgZMOpdGFpbGxlIGNvbW1lbnQgbGUgZmFpcmUgZW4gYXNzb2NpYW50ICpwbWVhc3lyKiDDoCB1biBzY3JpcHQgUHl0aG9uLCBjaG9zZSBwb3NzaWJsZSBkYW5zIHVuIG3Dqm1lIHByb2dyYW1tZSDDoCBsJ2FpZGUgZGVzIE5vdGVib29rIC5SbWQgZGUgUlN0dWRpby4KCiMjIyBEw6l6aXBhZ2UgZGVzIGZpY2hpZXJzIHJzZmEgZXQgcnNmYS1tYWogCgpBdmVjIGxlIHBhY2thZ2UgKnBtZWFzeXIqIG9uIGTDqXppcHBlIGRlcHVpcyB1biBzY3JpcHQgUiBsZXMgZmljaGllcnMgYHJzZmFgIGV0IGByc2ZhX21hamAuCgpgYGB7cn0KIyMjIyMjIyMjIyMgU2NyaXB0IFIKIyMjIyMjIyMjIyMgIyMjIyMjIyMKbGlicmFyeShwbWVhc3lyKQoKYWRlemlwKGZpbmVzcyAgPSAnNzUwNzEyMTg0JywKICAgICAgIGFubmVlICAgPSAyMDE1LAogICAgICAgbW9pcyAgICA9IDEyLAogICAgICAgcGF0aCAgICA9ICd+L0RvY3VtZW50cy9kYXRhL3JzZicsCiAgICAgICB0eXBlICAgID0gIm91dCIsCiAgICAgICBsaXN0ZSAgID0gYygncnNmYScsICdyc2ZhLW1haicpKQoKYGBgCgoKIyMjIFNvbHV0aW9uIHVuaXF1ZW1lbnQgYXZlYyAqcG1lYXN5cioKCkxlIHBhcmFtw6p0cmUgYGxpc3RlcmAgZGUgbGEgZm9uY3Rpb24gYMOscmFmYWVsKClgIHBlcm1ldCBkZSBsaXN0ZXIgbGUgdHlwZSBkZSByYWZhZWwgcXVlIGwnb24gc291aGFpdGUgaW1wb3J0ZXIgZGFucyBSCgpgYGB7cn0KaXJhZmFlbCgnNzUwNzEyMTg0JywgJzIwMTUnLCAnMTInLCAnfi9Eb2N1bWVudHMvZGF0YS9yc2YvJywgcHJvZ3Jlc3MgPSBGLCBsaXN0ZXIgPSBjKCdDJywgJ00nKSkgLT4gcmFmYWVsCmBgYAoKCiMjIyBTb2x1dGlvbiBlbiBwYXNzYW50IHBhciBweXRob24KCiMjIyMgVsOpcmlmaWVyIGxlIHBhdGggZGFucyBweXRob24KCkNoYW5nZXIgZGUgcGF0aCBkYW5zIHVuIE5vdGVib29rIG4nZXN0IHBhcyBjb25zZWlsbMOpLCBvbiB2w6lyaWZpZSBxdWUgbCdvbiBlc3QgYmllbiBkYW5zIGxlIHLDqXBlcnRvaXJlIG/DuSBzb250IGxlcyBmaWNoaWVycy4KCmBgYHtweXRob259CiMjIyMjIyMjIyMjIFNjcmlwdCBQeXRob24KIyMjIyMjIyMjIyMgIyMjIyMjIyMjIyMjIwppbXBvcnQgb3MKcHJpbnQob3MucGF0aC5hYnNwYXRoKCcnKSkKYGBgCgojIyMjIEZvbmN0aW9uIGRlIHNwbGl0IGR1IGZpY2hpZXIgcnNmYSBwYXIgdHlwZSBkZSByc2YgKEEsIEIsIEMsIE0sIC4uLikKCkxhIGZvbmN0aW9uIHBlcm1ldCBkZSBjcsOpZXIgdW4gbm91dmVhdSBmaWNoaWVyIG5lIGNvbnRlbmFudCBxdWUgbGUgdHlwZSBkZSByc2YgcXVlIGwnb24gc291aGFpdGUgw6l0dWRpZXIuCgpgYGB7cHl0aG9ufQojIyMjIyMjIyMjIyBTY3JpcHQgUHl0aG9uCiMjIyMjIyMjIyMjICMjIyMjIyMjIyMjIyMKaW1wb3J0IG9zCgojIEZvbmN0aW9uIGRlIHNwbGl0IGR1IGZpY2hpZXIgcnNmYQpkZWYgc3BsaXRfcnNmYShmaWx0cmUsIHBhdGgsIGZpbmVzcywgYW5uZWUsIG1vaXMsIHR5cGUpOgogICMgR2VzdGlvbiBkZXMgY2hlbWlucyAoYSBhZGFwdGVyIHBvdXIgd2luZG93cykKICAjIEZpY2hpZXIgcnNmYSBhdSBkZXBhcnQKICBmaWxpbiA9ICcvJy5qb2luKChwYXRoLCAnLicuam9pbigoZmluZXNzLCBhbm5lZSwgbW9pcywgdHlwZSkpKSkKICAjIEZpY2hpZXIgcnNmYSBmaWx0cmUgZW4gc29ydGllLCBvbiBhY2NvbGUgYXUgZmluZXNzIGxlIHR5cGUgZGUgcnNmYSwgZXg6IGZpbmVzc19DCiAgZmlsb3V0ID0gJy8nLmpvaW4oKHBhdGgsICcuJy5qb2luKChmaW5lc3MgKyAnXycgKyAgZmlsdHJlLCBhbm5lZSwgbW9pcywgdHlwZSkpKSkKICAKICAjIFBvdXIgY2hhcXVlIGxpZ25lIGR1IGZpY2hpZXIgZCdlbnRyZWUgb24gdGVzdGUgbGUgdHlwZSBkJ2VucmVnaXN0cmVtZW50IEEsIEIsIEMuLi4gc2Vsb24KICAjIHF1ZSBsZSBmaWNoaWVyIHNvaXQgLnJzZmEgb3UgLnJzZmEtbWFqLCBkb25jIGVuIGNvbG9ubmUgOSBvdSAyNyBkdSBmaWNoaWVyIHRleHRlCiAgZm91dCA9IG9wZW4oZmlsb3V0LCAndycpCiAgZm9yIGxpbmUgaW4gb3BlbihmaWxpbik6CiAgICBpZiB0eXBlID09ICdyc2ZhJzoKICAgICAgaWYgbGluZVs4XSA9PSBmaWx0cmU6CiAgICAgICAgZm91dC53cml0ZShsaW5lKQogICAgaWYgdHlwZSA9PSAncnNmYS1tYWonOgogICAgICBpZiBsaW5lWzI2XSA9PSBmaWx0cmU6CiAgICAgICAgZm91dC53cml0ZShsaW5lKQogIGZvdXQuY2xvc2UoKQoKCiMgRXhlY3V0aW9uIGRhbnMgbm90cmUgY2FzIHBvdXIgdW4gZmljaGllciBwbGFjZSBpY2kgOgpjaGVtaW4gPSBvcy5wYXRoLmFic3BhdGgoJycpCgojIEV4ZW1wbGUgcG91ciBsZXMgcnNmYSBDIGV0IE0gc3VyIGxlcyBkZXV4IHR5cGVzIGRlIGZpY2hpZXJzIChyc2ZhIGV0L291IHJzZmEtbWFqKQpmb3IgaSBpbiBbJ0MnLCAnTSddOgogIHNwbGl0X3JzZmEoaSwgY2hlbWluLCAnNzUwNzEyMTg0JywnMjAxNScsICcxMicsICdyc2ZhJykKICBwcmludCgnU3BsaXQgZGVzIHJzZmEgJyArIGkgKyAnIG9rJykKICAjc3BsaXRfcnNmYShpLCBjaGVtaW4sICc3NTA3MTIxODQnLCcyMDE1JywgJzEyJywgJ3JzZmEtbWFqJykKYGBgCgojIyMjIExlcyBmaWNoaWVycyBwcm9kdWl0cwoKVsOpcmlmaWVyIGxlcyBmaWNoaWVycyB0b3V0IGp1c3RlIHByb2R1aXRzLgoKYGBge3J9CiMjIyMjIyMjIyMjIFNjcmlwdCBSCiMjIyMjIyMjIyMjICMjIyMjIyMjCmxpc3QuZmlsZXMoKSAtPiBmaWNoaWVycwpjYXQoZmljaGllcnNbZ3JlcGwoJ1xcLnJzZmEnLCBmaWNoaWVycyldLCBzZXAgPSAiXG4iKQpgYGAKCiMjIyMgSW1wb3J0IGRhbnMgUiBhdmVjICpwbWVhc3lyKgoKTCdpbXBvcnQgZGVzIHJzZiB0eXBlIHBhciB0eXBlIGVzdCBwbHVzIGxlZ2VyIGVuc3VpdGUgZGFucyBSIDoKCmBgYHtyfQojIyMjIyMjIyMjIyBTY3JpcHQgUgojIyMjIyMjIyMjIyAjIyMjIyMjIwpsaWJyYXJ5KHBtZWFzeXIpCiMgSW1wb3J0IGRlIGxhIHRhYmxlIGRlcyBhY3RlcyBDQ0FNIGVuIGV4dGVybmVzIHVuaXF1ZW1lbnQKaXJhZmFlbCgnNzUwNzEyMTg0X00nLCAnMjAxNScsICcxMicsICd+L0RvY3VtZW50cy9kYXRhL3JzZi8nLCBwcm9ncmVzcyA9IEYsIGxpc3RlciA9ICdNJykkTSAtPiByYWZhZWxfTQpgYGAKCkNldHRlIGFwcHJvY2hlIMOpdml0ZSBkJ2Fsb3VyZGlyIGxlcyBmaWNoaWVycyBsdXMgcGFyICpwbWVhc3lyKiBldCBhbGzDqGdlIGRvbmMgbGVzIHRyYWl0ZW1lbnRzLgoKLS0tLS0tCjI3LzAyLzIwMTcgIApbcmV0b3VyXShodHRwOi8vZ3VpbGxhdW1lcHJlc3NpYXQuZ2l0aHViLmlvL2Jsb2cvKQoK