Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Traitement année 2011 #43

Open
NewWorldOrders opened this issue Dec 26, 2022 · 6 comments
Open

Traitement année 2011 #43

NewWorldOrders opened this issue Dec 26, 2022 · 6 comments
Assignees

Comments

@NewWorldOrders
Copy link

Bonjour,

Ce souci n'est pas majeur car a priori cela ne concerne que le traitement d'archives RSS MCO de l'année 2011
Problème de colonnes décalées.

J'ai trouvé aussi une solution que j'expose ici dans l'optique de faire la modif si ok pour toi, si jamais cela pourra servir a d'autres

L'import RSS de la fonction irum pour l'année 2011 est paramétré en deux parties, avec import de quatre colonnes NOCLAS, CDGHM, Fil1, NOVERG dans un premier temps, puis import d'une variable RUM qui sera découpée en plusieurs variables au cours d'une étape "mutate", en commençant par CDERG.

Mais la fonction readr::read_fwf a aujourd'hui l'option trim_ws = T activée par défaut dans la dernière version

Du coup si CDERG est manquant (laissé blanc), une fonction trimws sera appliquée et coupera 3 blancs, dans ces cas la variable RUM commencera par le numéro FINESS en position 1.
Par conséquent la fonction dplyr::mutate qui cherche le finess en position 4 va obtenir un FINESS coupé, et idem pour toutes les variables suivantes.

Une solution consiste à forcer trimws = F dans l'appel à la fonction readr::read_fwf

Je peux faire le changement ?

@GuillaumePressiat
Copy link
Owner

Bonjour @NewWorldOrders,

Merci beaucoup pour ce ciblage d'erreur précis que je n'avais pas identifié. Cela pourrait expliquer un problème chez moi aussi en 2011 que je ne m'expliquais pas.
J'avais eu à utiliser trim_ws = FALSE sur les rhs dernièrement.
Je peux regarder si tu veux. Tu as testé chez toi avec trim_ws = FALSE ?

@GuillaumePressiat
Copy link
Owner

Cela me semble ok chez moi.

Tu me diras

@NewWorldOrders
Copy link
Author

Bonjour,

J'ai testé aujourd'hui

En effet trim_ws = F résolvait le décalage pour la variable FINESS, mais après un test plus approfondi cela provoque des effets de bord par exemple les numéros de séjour n'ont plus la bonne longueur car ils conservent leurs blancs jusqu'à 20 caractères.

Il faut donc faire d'autres modifications pour éviter les effets de bord. Je suis en train de regarder.

@GuillaumePressiat
Copy link
Owner

Ok,

Oui effectivement, c'est bien le comportement attendu.

on peut imaginer faire en fin de %>% le mutate suivant alors sur les différents tibble :

%>% mutate_if(is.character, stringr::str_trim)

NewWorldOrders added a commit to NewWorldOrders/pmeasyr that referenced this issue Dec 29, 2022
@NewWorldOrders
Copy link
Author

Merci pour tes réponses rapides ! J'ai pu regarder plus en détail

Je propose ceci:

D'abord d’ajouter le libellé de la variable "Nombre de faisceaux" qui faisait partie des formats RSS MCO version 115, avant mars 2011.

J'ai modifié le fichier de formats mais seulement dans Excel. Il faudra ensuite le mettre dans le Rdata. Je n’ai pas changé les numéros de colonnes des formats mais ceux-ci ne sont pas utilisés par la fonction import pour l’instant, car ce sont les numéros de colonnes de la fonction mutate qui sont déterminants ici.

Ensuite pour rétablir les bonnes longueurs de colonnes j'ai modifié irum (voire dernier commit, que j'ai mis à jour dans la pull request)

Merci à toi

@NewWorldOrders
Copy link
Author

Edit pour préciser les modifications: il faut probablement les deux variables "nombre de faisceaux" et "numéro innovation" des formats MCO 2011 "115" et "116". Actuellement il n'y en a qu'une sur les deux.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants