Convertit les instructions de la forme NEW = put(OLD, $var.);
d'un
programme SAS en leur équivalent en R.
convert_put( sas_pgm, style = c("dplyr", "base"), fmt_list = "<fmt>", keep_na = FALSE, file = NULL, quiet = FALSE )
sas_pgm | un programme SAS sous la forme d'un vecteur de chaînes de caractères. |
---|---|
style | forme du code généré : |
fmt_list | nom de la liste créée auparavant par from_tab ou from_pgm (sous forme de chaîne de caractères). |
keep_na | pour sélectionner avec l'option |
file | par défaut, le résultat est affiché dans la console. Spécifier un nom de fichier pour une sauvegarde disque. |
quiet | pour désactiver certains avertissements. |
La fonction écrit le résultat dans la console ou dans un fichier. La chaîne de caractères correspondante est de plus retournée sous forme de vecteur caractère (de manière invisible).
La fonction recherche le motif ci-dessus quel que soit l'endroit où il apparaît dans le programme, hormis dans un commentaire. Les espaces et sauts de lignes sont sans importance dans la détection des instructions.
Deux styles sont possibles pour le code R généré :
"dplyr"
génère des instructions de type
mutate(NEW = <fmt>$var[OLD], ...)
"base"
génère une syntaxe standard
<donnees>$NEW <- <fmt>$var[<donnees>$OLD]
test_pgm <- readLines( system.file("extdata", "pgm_format_test.sas", package = "fmtsas") ) cat(tail(test_pgm), sep = "\n") #> #> data t1 ; #> set t2 ; #> GEO2 = put(REG2016, $reg.) ; #> A13 = put(A21, $a13_.) ; #> run ; convert_put(test_pgm, style = "dplyr") #> Warning: le code genere ne pourra probablement pas s'executer en l'etat car `<fmt>` n'existe pas #> (pour creer cette liste, utiliser `from_tab` ou `from_pgm`) #> mutate( #> GEO2 = <fmt>$reg[REG2016], #> A13 = <fmt>$a13_[A21] #> ) convert_put(test_pgm, style = "base") #> Warning: le code genere ne pourra probablement pas s'executer en l'etat car `<fmt>` n'existe pas #> (pour creer cette liste, utiliser `from_tab` ou `from_pgm`) #> <donnees>$GEO2 <- <fmt>$reg[<donnees>$REG2016] #> <donnees>$A13 <- <fmt>$a13_[<donnees>$A21] convert_put(test_pgm, keep_na = TRUE) #> Warning: le code genere ne pourra probablement pas s'executer en l'etat car `<fmt>` n'existe pas #> (pour creer cette liste, utiliser `from_tab` ou `from_pgm`) #> mutate( #> GEO2 = <fmt>$reg[REG2016, keep_na = TRUE], #> A13 = <fmt>$a13_[A21, keep_na = TRUE] #> )