Ajout de positions à gauche
De nombreux codages PMSI sont habituellement sur 2 positions (CMD, CM, numéro de chapitre CIM-10, …).
Ces derniers, selon les sources de données et les traitements effectués, peuvent se retrouver codés sur 1 position sans le 0 à gauche (ex : CMD 1 au lieu du CMD 01 attendue).
On peut alors vouloir rétablir le 0 à gauche.
La fonction str_pad() du package stringr:: du tidyverse est particulièrement adaptée.
cmd_01 <- "1" # cmd_01 is character
cmd_01 <- stringr::str_pad(cmd_01, width = 2, side = "left", pad = "0")
# width = nombre voulu de positions. Ici width = 2
# side = left car on veut ajouter le 0 à gauche
# pad = "0" = le motif que l'on souhaite ajouter
cmd_01
#> [1] "01"
Remarque : on voit là l’intérêt de toujours travailler en character pour ces codages.
Suppression de positions à gauche
Plusieurs variables sortent souvent des fichiers PMSI de production avec des 0 à gauche.
Exemple avec le nombre de DAS sur 2 positions dans chaque RUM : on récupère ainsi “08” pour 8 DAS dans le RUM.
On peut souhaiter nettoyer ces 0 à gauche pour les traitements.
Plusieurs approches sont possibles. Nous privilégions celle avec la fonction str_remove() du package stringr: du tidyverse.
nDA <- "08"
nDA <- stringr::str_remove(nDA, pattern = "^0+")
# "^0+" est une expression régulière (regex) qui repère tous les 0 à gauche
nDA
#> [1] "8"
Si on souhaite juste transformer la donnée en integer, on peut faire un simple as.integer()
nDA <- "08"
as.integer(nDA)
#> [1] 8
Mais pour nettoyer des NAS ou des numéro d’UM c’est bien l’approche avec stringr::str_remove() qui convient le mieux car elle conserve la donnée en character.