Charger les librairies
Importer un fichier SAS
Pour importer des fichiers SAS, il existe le package haven avec l’instruction read_sas
. Si on a un catalogue de formats, il faut l’ajouter dans l’instruction catalog_file
.
Import avec la library haven
erfi_ext<- read_sas("erfi_extrait.sas7bdat",catalog_file="formats.sas7bcat")
erfi_ext
IDENT | poids12 | MB_STOC | EA_VERIFC | CA_MARIE | OA_ASPIR | OA_BRICO | OA_SATREP | MA_SEXE | MA_LNAIS | MA_ANAIS | MA_AGER | OA_REPAS2 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
3 | 3037.634 | 4 | 2 | 1 | 1 | 1957 | 48 | NA | ||||
7 | 2395.681 | 4 | 2 | 2 | 1 | 1971 | 34 | NA | ||||
8 | 3063.513 | 4 | 2 | 2 | 1 | 1986 | 19 | NA | ||||
9 | 3868.504 | 1 | 1 | 2 | 5 | 1 | 8 | 1 | 1 | 1969 | 36 | 5 |
11 | 3489.272 | 4 | 2 | 1 | 2 | 1974 | 31 | NA | ||||
15 | 4094.624 | 2 | 1 | 2 | 3 | 2 | 10 | 1 | 1 | 1957 | 48 | 4 |
16 | 2053.740 | 2 | 2 | 1 | 1 | 1937 | 67 | NA | ||||
17 | 2034.167 | 2 | 1 | 1 | 1 | 3 | 6 | 2 | 1 | 1955 | 50 | 1 |
20 | 4137.163 | 5 | 1 | 1 | 3 | 1 | 7 | 1 | 1 | 1968 | 36 | 3 |
21 | 4070.500 | 4 | 1 | 2 | 2 | 5 | 5 | 2 | 1 | 1977 | 28 | 2 |
Par défaut lorqu’on ouvre dans R le fichier erfi_ext
, on ne voit pas les formats mais on a l’indication dans les labels.
Retrouver les formats cachés
str(erfi_ext$MB_STOC)
Prise en compte des formats SAS
Vous trouverez ci-dessous la fonction “import_sas_label” créé par Arno Muller. Les variables character avec formats deviennent des variables factor. Les valeurs sont en texte.
Import de import_sas_label
source("https://raw.githubusercontent.com/arnomuller/Fonction_R/main/SAStoR/import_sas_label/fonction_import_sas_label.R")
Exemple :
erfi_ext <- import_sas_label(data_file = "erfi_extrait.sas7bdat",
catalog_file = "formats.sas7bcat",
blanc_as_NA = TRUE)
Pour readapter ce code il faut changer “erfi_ext” par le nom de votre fichier importé, ainsi que l’emplacement ou le nom de votre fichier sas et votre catalogue de formats. L’option blanc_as_NA : TRUE ou FALSE, permet de transformer les cases vides (““) en NA.
IDENT | poids12 | MB_STOC | EA_VERIFC | CA_MARIE | OA_ASPIR | OA_BRICO | OA_SATREP | MA_SEXE | MA_LNAIS | MA_ANAIS | MA_AGER | OA_REPAS2 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
3 | 3037.634 | Locataire ou sous-locataire | non | NA | NA | NA | Homme | France métropolitaine | 1957 | 48 | NA | |
7 | 2395.681 | Locataire ou sous-locataire | non | NA | NA | NA | Femme | France métropolitaine | 1971 | 34 | NA | |
8 | 3063.513 | Locataire ou sous-locataire | non | NA | NA | NA | Femme | France métropolitaine | 1986 | 19 | NA | |
9 | 3868.504 | Accédant à la propriété | oui | non | Toujours mon conjoint | Toujours moi | 8 | Homme | France métropolitaine | 1969 | 36 | Toujours mon conjoint |
11 | 3489.272 | Locataire ou sous-locataire | non | NA | NA | NA | Homme | Etranger ou DOM-TOM | 1974 | 31 | NA | |
15 | 4094.624 | Propriétaire non accédant | oui | non | Autant moi que mon conjoint | Le plus souvent moi | 10 | Homme | France métropolitaine | 1957 | 48 | Le plus souvent mon conjoint |
16 | 2053.740 | Propriétaire non accédant | non | NA | NA | NA | Homme | France métropolitaine | 1937 | 67 | NA | |
17 | 2034.167 | Propriétaire non accédant | oui | oui | Toujours moi | Autant moi que mon conjoint | 6 | Femme | France métropolitaine | 1955 | 50 | Toujours moi |
20 | 4137.163 | Logé gratuitement | oui | oui | Autant moi que mon conjoint | Toujours moi | 7 | Homme | France métropolitaine | 1968 | 36 | Autant moi que mon conjoint |
21 | 4070.500 | Locataire ou sous-locataire | oui | non | Le plus souvent moi | Toujours mon conjoint | 5 | Femme | France métropolitaine | 1977 | 28 | Le plus souvent moi |
Limites pour les variables avec intervalles
SAS a la particularité d’afficher des variables numériques continues en classe d’âge sans recréer de nouvelles variables. Ce n’est pas encore possible en R à notre connaissance. Nous conservons donc les valeurs d’origine lors de l’import mais nous pouvons recréer de nouvelles colonnes prenant en compte les intervalles du formats sas avec la fonction “create_var_label”.
Par exemple on sait que la variable “MA_AGER” a été défini par un format (nommé AGE4C) en classe d’âge sous SAS, il suffit d’utiliser la fonction comme ci-dessous et une nouvelle colonne prenant le nom du format sas apparait
Import de create_var_label
source("https://raw.githubusercontent.com/arnomuller/Fonction_R/main/SAStoR/create_var_label/fonction_create_var_label.R")
Exemple :
erfi_ext2 <- create_var_label(erfi_ext, "MA_AGER")
erfi_ext2
IDENT | poids12 | MB_STOC | EA_VERIFC | CA_MARIE | OA_ASPIR | OA_BRICO | OA_SATREP | MA_SEXE | MA_LNAIS | MA_ANAIS | MA_AGER | OA_REPAS2 | AGE4C |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3 | 3037.634 | Locataire ou sous-locataire | non | NA | NA | NA | Homme | France métropolitaine | 1957 | 48 | NA | 46-55 ans | |
7 | 2395.681 | Locataire ou sous-locataire | non | NA | NA | NA | Femme | France métropolitaine | 1971 | 34 | NA | moins de 36 ans | |
8 | 3063.513 | Locataire ou sous-locataire | non | NA | NA | NA | Femme | France métropolitaine | 1986 | 19 | NA | moins de 36 ans | |
9 | 3868.504 | Accédant à la propriété | oui | non | Toujours mon conjoint | Toujours moi | 8 | Homme | France métropolitaine | 1969 | 36 | Toujours mon conjoint | 36-45 ans |
11 | 3489.272 | Locataire ou sous-locataire | non | NA | NA | NA | Homme | Etranger ou DOM-TOM | 1974 | 31 | NA | moins de 36 ans | |
15 | 4094.624 | Propriétaire non accédant | oui | non | Autant moi que mon conjoint | Le plus souvent moi | 10 | Homme | France métropolitaine | 1957 | 48 | Le plus souvent mon conjoint | 46-55 ans |
16 | 2053.740 | Propriétaire non accédant | non | NA | NA | NA | Homme | France métropolitaine | 1937 | 67 | NA | plus de 55 ans | |
17 | 2034.167 | Propriétaire non accédant | oui | oui | Toujours moi | Autant moi que mon conjoint | 6 | Femme | France métropolitaine | 1955 | 50 | Toujours moi | 46-55 ans |
20 | 4137.163 | Logé gratuitement | oui | oui | Autant moi que mon conjoint | Toujours moi | 7 | Homme | France métropolitaine | 1968 | 36 | Autant moi que mon conjoint | 36-45 ans |
21 | 4070.500 | Locataire ou sous-locataire | oui | non | Le plus souvent moi | Toujours mon conjoint | 5 | Femme | France métropolitaine | 1977 | 28 | Le plus souvent moi | moins de 36 ans |
Une nouvelle variable a été ajoutée à la fin des données
Variable discrétisée selon le format
table(erfi_ext2$AGE4C)
AGE4C | Effectifs |
---|---|
moins de 36 ans | 2900 |
36-45 ans | 1977 |
46-55 ans | 1904 |
plus de 55 ans | 3298 |
Référence
https://github.com/arnomuller/Fonction_R/tree/main/SAStoR/import_sas_label