Les dictionnaires sont des tableaux associatifs dans lesquels chaque clés est reliée à une valeur.
Un dictionnaire se crée avec des accolades.
dico = {} # Création d'une dictionnaire vide
dico = {'clé1' : 'valeur1', 'clé2' : 'valeur1', 'clé3' : 'valeur3'} # Création d'une dictionnaire avec 3 valeurs
Pour ajouter une valeur dans un dictionnaire, il faut indiquer une clé entre crochets.
mon_dico[clé] = valeur # Ajout de valeur à la "position" clé
Si on ajoute une valeur à une clé existante, cela remplacera l'ancienne valeur par la nouvelle.
À savoir : si on boucle sur un dictionnaire, Python nous renverra les clés :
for element in dico:
print(element) # Affiche clé1 puis clé2 puis clé3
Les dictionnaires sont des tableaux associatifs dans lesquels chaque clés est reliée à une valeur.
Un dictionnaire se crée avec des accolades.
dico = {} # Création d'une dictionnaire vide
dico = {'clé1' : 'valeur1', 'clé2' : 'valeur1', 'clé3' : 'valeur3'} # Création d'une dictionnaire avec 3 valeurs
Pour ajouter une valeur dans un dictionnaire, il faut indiquer une clé entre crochets.
mon_dico[clé] = valeur # Ajout de valeur à la "position" clé
Si on ajoute une valeur à une clé existante, cela remplacera l'ancienne valeur par la nouvelle.
À savoir : si on boucle sur un dictionnaire, Python nous renverra les clés :
for element in dico:
print(element) # Affiche clé1 puis clé2 puis clé3
MACRO-VARIABLES
Contrairement aux langages de programmation classiques, les macro-variables ne peuvent stocker que du texte. L'utilisation des guillemets n'est donc pas nécessaire.
De plus, le nom de macro-variables n'est pas sensible à la case (pas de différence entre les lettres minuscules et majuscules).
Il existe deux méthodes pour créer des macro-variables :
- Avec la macro-fonction %LET.
%LET maVar1=Stid; /* Le texte Stid est stocké dans la macro-variable maVar1. */
%LET maVar2=2017-2018; /* Le texte 2017-2018 est stocké dans la macro-variable maVar2. */
%LET maVar3=var1; /* Le contenu de la variable var1 est stocké dans la macro-variable maVar1. */
- Avec l'instruction CALL SYMPUT dans une étape DATA.
DATA _NULL_; /* Création d'une table nommée _NULL_ qui est temporaire (non stockée). */
SET table1; /* Copie des données de la table1 dans la table _NULL_. */
CALL SYMPUT("maVar1",var1); /* La macro-variable nommée maVar1 est égale à la dernière valeur prise par la variable nommée var1. */
RUN;
Si l'on veut créer autant de macro-variables qu'il y a d'individus dans une table, on utilise l'instruction COMPRESS.
DATA _NULL_;
SET table1;
CALL SYMPUT(COMPRESS("maVar"||_N_),var1); /* Concaténation de la macro-variable maVar avec un compteur d'individu (_N_). La macro-variable maVar1 sera égale à la valeur prise par le premier individu de la table pour la variable var1. maVar2 sera égale au deuxième individu, etc ... */
RUN;
Une macro-variable peut stocker une concaténation (fusion) de macro-variables. On doit alors mettre le caractère & devant le nom des macro-variables.
Pour la concaténation d'une macro-variable et d'un mot, on doit mettre un point entre la macro-variable et le mot. Par contre, pour la concaténation d'un mot et d'une macro-variable, on ne met pas de point.
%LET maVar1=Stid;
%LET maVar2=2017-2018;
%LET maVar3=&maVar1&maVar2; /* Le texte Stid2017-2018 est stocké dans la macro-variable nommée maVar3. */
%LET maVar4=&maVar1.Bonjour; /* Le texte StidBonjour est stocké dans la macro-variable nommée maVar4. */
%LET maVar4=Bonjour&maVar1; /* Le texte BonjourStid est stocké dans la macro-variable nommée maVar4. */
Pour afficher le texte contenu dans une macro-variable, on utilise la macro-fonction %PUT.
Il ne faut pas oublier le caractère & devant le nom de la macro-variable.
%PUT &maVar1; /* Affiche Stid (contenu de la macro-variable maVar1). */
À savoir : l'affichage des macro-variables et macro-programmes se fait dans le journal.
Pour supprimer une macro-variable, on utilise la macro-fonction %SYMDEL.
%SYMDEL maVar1;
Pour afficher dans le journal toutes les macro-variables crées avec leur contenu, on utilise
l'instruction _USER_.
%PUT _USER_;
Pour afficher dans le journal toutes les macro-variables présentes de base dans SAS, on utilise
l'instruction _AUTOMATIC_.
%PUT _AUTOMATIC_;
%PUT _ALL_; /* Instruction _USER_ + instruction _AUTOMATIC_ (les deux à la fois). */
Une macro-variable peut avoir deux types de portée :
- Portée locale : une macro-variable créée dans un macro-programme (avec l'instruction %LET par exemple) est de portée locale. C'est-à-dire qu'elle ne peut être utilisée uniquement dans le macro-programme.
- Portée globale : une macro-variable créée à l'extérieur d'un macro-programme est de portée globale. C'est-à-dire qu'elle peut être utilisée soit dans le macro-programme soit en dehors du macro-programme.
Pour déclarer une macro-variable en portée globale, on utilise la macro-fonction %GLOBAL.
%MACRO progA;
%GLOBAL maVar1; /* La déclaration de la macro-variable nommée maVar1 en portée globale se fait avant sa création (%LET). */
%LET maVar1=Statistique descriptive;
%PUT &maVar1;
%MEND progA;
Pour déclarer une macro-variable en portée locale, on utilise la macro-fonction %LOCAL.