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
)

Arguments

sas_pgm

un programme SAS sous la forme d'un vecteur de chaînes de caractères.

style

forme du code généré : "dplyr" (défaut) ou "base". Voir section 'Details'.

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 keep_na (voir cet opérateur).

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.

Value

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).

Details

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]

Examples

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]
#> )