from_pgm: Convertit un programme de formats SAS

Description Usage Arguments Details Value See Also Examples

View source: R/from_pgm.R

Description

Convertit les données contenues dans les proc format d'un programme SAS en une liste de vecteurs qui pourra servir à effectuer des conversions.

Usage

1
from_pgm(sas_pgm, quote = c("double", "simple"), source = FALSE)

Arguments

sas_pgm

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

quote

type de guillemet. SAS autorise deux types de guillemets pour décrire une chaîne de caractères. La fonction suppose que des guillemets doubles sont utilisés ("). Dans le cas contraire ('), spécifier quote = "simple".

source

conserver le code SAS dans un attribut "source" de l'objet en sortie.

Details

La fonction ne recherche que les formats de type caractère (value $nom). Les formats numériques sont ignorés (un message d'avertissement dresse une liste de ces formats, s'ils sont présents).

Le programme peut se présenter sous la forme d'une chaîne unique de caractères mais aussi d'un vecteur de plusieurs chaînes (typiquement le résultat de la lecture d'un fichier par readLines). Les commentaires, espaces et sauts de lignes surnuméraires sont autorisés. La casse du code SAS (majuscule ou minuscule) est sans importance. Le programme peut en outre contenir autre chose que des proc format.

La fonction détecte plusieurs valeurs séparées par des virgules à gauche du signe =. En revanche, les intervalles de caractères (type "A"-"Z") ne sont pas gérés car ils contiennent un nombre indéfini de modalités possibles. Les bornes de l'intervalle seront toutefois prises en compte (comme si "A","Z" était écrit). La syntaxe sans les guillemets (A-Z), également permise par SAS, n'est pas prise en compte et ces intervalles seront ignorés.

Il est possible de choisir le type de guillemets (double ou simple) entourant les valeurs. Avec un programme contenant un mélange de guillemets simples et doubles, la fonction ne détectera qu'un type et pas l'autre.

La modalité SAS other (valeur par défaut) est sauvegardée dans l'attribut "other" pour chaque élément de la liste. Si le format SAS n'a pas de valeur par défaut, l'attribut n'est pas présent.

Value

Une liste contenant autant d'éléments que de formats si les données avaient été générées par SAS via une proc format.

Voir les exemples pour l'utilisation de cette liste.

See Also

from_tab pour importer les formats contenus dans une table SAS.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
## Import d'un programme SAS :

test_pgm <- readLines(
  system.file("extdata/pgm_format_test.sas", package = "fmtsas"),
  encoding = "UTF-8"
)
cat(test_pgm, sep = "\n")

## Conversion des formats :

conv <- from_pgm(test_pgm)
conv

## Utilisation :

# soit un jeu de donnees contenant des codes a convertir en libelles
donnees <-
  data.frame(
    ACT_CODE = c( "B",   NA,  "C",  "P",  "W", "F"),
    REG_CODE = c("94", "04", "44", "09", "01",  NA)
  )

# pour remplacer les codes par les libelles (pour ACT_CODE)
donnees$ACT_LIB  <- conv$a13_[donnees$ACT_CODE]
donnees$ACT_LIB2 <- conv$a13_[donnees$ACT_CODE, keep_na = TRUE]
donnees$REG_LIB  <- conv$reg[donnees$REG_CODE]

donnees

InseeFrLab/fmtsas documentation built on Dec. 17, 2021, 11:30 p.m.