En tant que langage de traitement et de manipulation de données, SAS vous offre une variété de processus efficaces et centrés sur les données pour traiter de grandes quantités de données.
Les programmes SAS avec des blocs de code répétitifs ont tendance à devenir longs et lourds en code ; De plus, les scripts manuels peuvent devenir laborieux et monotones, augmentant ainsi votre marge d’erreur.
Alors, comment automatiser les sections de code pour effectuer des tâches répétitives ?
C’est là que les macros SAS entrent en jeu. Lisez la suite pour découvrir ce que sont les macros SAS et comment elles améliorent l’efficacité de SAS.
Qu’est-ce qu’une macro SAS ?
Les macros sont des variables que vous pouvez utiliser dans les codes SAS pour automatiser les tâches répétitives. Lors de l’utilisation de macros comme éléments de codage, les variables de macro stockent des caractères dynamiques et des valeurs numériques, notamment des noms, des lettres et des chiffres.
Un code de macro comprend deux blocs de construction, la macro elle-même et la macro variable. Les programmes SAS vous obligent à les différencier à l’aide de & et % panneaux.
Par exemple, si vous écrivez &Employé, vous appelez la variable macro. Mais, si vous écrivez %Employévous définissez la variable macro.
Pourquoi utiliser les macros SAS ?
L’utilisation de macros dans votre code SAS présente plusieurs avantages. Ils peuvent vous aider :
- Remplacez les lignes de code répétitives par une seule variable
- Validez les modifications apportées à une variable et répercutez-les dans plusieurs sections du programme
- Entrez des valeurs de données en temps réel pour rendre vos programmes axés sur les données et efficaces
Types de macros SAS
Il existe des macros intégrées que vous utiliserez couramment dans SAS. Ils s’avéreront très utiles pour les applications en temps réel sur la base de cas d’utilisation.
1. Instruction %Let
Vous pouvez utiliser le %laisser macro pour toute chaîne ou valeur numérique. Il a les caractéristiques suivantes :
● La portée de la variable est comprise entre 0 et 65 534
● Les expressions mathématiques dans une macro-variable ne sont pas évaluées
● Stocker librement des valeurs numériques dans une chaîne
● Vous pouvez conserver les guillemets dans le cadre d’une valeur de caractère
● Tous les espaces avec début ou fin sont supprimés avant l’affectation
Pour déclarer un %laisser macro, utilisez le nom de la variable macro précédé d’une esperluette (&).
Voici la syntaxe d’un common %laisser macro :
%let macro variable = value
Comme condition préalable, le nom de la variable macro doit être dépourvu d’espaces, limité à 32 caractères et ne doit pas commencer par une valeur numérique.
Voici un exemple de la façon dont vous pouvez utiliser le %laisser déclaration dans sa forme la plus simple :
%let age = 10;data sample;
input name $ age sex $;
cards
;
Rob 30 M
Alan 10 M
Jerry 20 M
Monica 35 F
;
run;
proc sort data = sample (where = (age NE &age.));
by age;
run;
Voici à quoi ressemble le code dans un environnement SAS :
Dans la sortie, les valeurs du âge les colonnes qui ne sont pas égales à 10 sont filtrées dès que la condition est remplie. La variable macro est définie à côté de la %laisser instruction, qui est utilisée pour égaliser les valeurs dans la condition.
Si vous souhaitez exécuter les valeurs après avoir modifié la condition de filtre, il vous suffit de modifier la valeur de 10 au nombre souhaité dans le %laisser déclaration. C’est si simple; réexécutez le code pour voir les nouveaux résultats.
Voici à quoi ressemble la sortie lorsque le code est exécuté :
2. Macro-paramètres
Les paramètres de macro sont plutôt utiles lorsque vous souhaitez définir directement les variables et les étapes dans un ensemble d’instructions de macro. L’ensemble du bloc d’instructions peut être réutilisé pour exécuter diverses fonctions, selon les besoins.
Par exemple, supposons que vous souhaitiez trier un jeu de données existant en fonction de certains critères.
data test_example;
input ID $ name $ age;
cards;
001 John 20
002 Jack 30
003 Ron 15
001 Jack 30
005 Aon 18
;
run;%macro sorting (in_ds= , sort_var =, out_ds=);
proc sort data = &in_ds nodupkey out = &out_ds;
by &sort_var;
run;
%mend;
Dans le premier bloc de code, créez un ensemble de données avec des valeurs factices. Une fois les données disponibles, vous pouvez créer une instruction de macro dans le %macro et %réparer déclarations.
Dans le %macro vous pouvez définir le nom de la macro, ainsi que les variables locales, qui contiendraient certaines valeurs lorsque la macro est appelée.
Enfin, terminez le bloc de code macro avec le %réparer déclaration.
Pour appeler la macro, transmettez l’instruction macro de la manière suivante :
%sorting (in_ds= test_example, sort_var = name , out_ds=test_example_new);
Où:
- %tri: nom de la variable de macro créée dans l’instruction de macro
- in_ds : le nom du jeu de données à trier
- sort_var : variable à utiliser lors du tri de l’ensemble de données
- out_ds : nom du jeu de données résultant, qui sera créé après le tri du jeu de données
3. Utilisation de proc sql comme variable de macro
SQL est l’un des langages les plus couramment utilisés au sein de SAS pour la manipulation et le traitement des données. Cela dit, il est impératif de pouvoir stocker des valeurs dans une variable SQL pour une utilisation ultérieure. Les macros et SQL forment une combinaison solide, et les utiliser ensemble peut aller très loin.
Par exemple, si vous avez une liste de valeurs que vous souhaitez stocker dans une variable macro, vous pouvez utiliser l’instruction Proc SQL pour créer une variable macro.
Pour ce faire, suivez cet exemple :
proc sql;
select variable_name into: macro_variable_name separated by ','
from table_name;
Vous pouvez utiliser des conditions pour filtrer les valeurs des variables à l’aide d’un où déclaration si vous le souhaitez. Sinon, avec les conditions normales, vous pouvez toujours enregistrer des valeurs dans une seule variable. Cela inclut les valeurs alphanumériques et numériques.
Voici un exemple pour illustrer la création d’une macro variable à l’aide de proc sql:
proc sql;
select age into: age separated by ','
from test_example;
La sortie contient une liste de toutes les valeurs d’âge de la table test_example, chacun étant séparé par une virgule. Cela peut être utilisé pour filtrer les informations dans une autre instruction Proc SQL lorsque vous extrayez des informations des tables du serveur.
Sortir:
Utilisation de macros SAS pour automatiser les tâches répétitives
Cette liste de macros n’est pas exhaustive. Il existe quelques autres variantes qui peuvent vous faciliter la vie, surtout si vous codez tous les jours.
Cependant, les macros ne sont pas limitées à SAS uniquement. Il existe quelques variantes de macro disponibles dans VBA qui peuvent être utilisées pour automatiser les tâches répétitives quotidiennes dans Excel, Word et d’autres applications MS Office.
Si vous êtes un passionné d’automatisation, essayez les macros VBA.
Lire la suite
A propos de l’auteur