Les exemples utilisent des jeux de données SASHELP existants (Sashelp.Cars, Sashelp.Class, Sashelp.Comet, Sashelp.Quakes) ou des créations de jeux de données simples basées sur ceux-ci.
1 Bloc de code
DATA STEP
Explication : Cet exemple utilise l'instruction KEEP pour contrôler quelles variables sont écrites dans le jeu de données de sortie. L'instruction LIBNAME spécifie l'emplacement pour l'écriture du jeu de données de sortie et l'associe au nom mysas. L'instruction SET lit le jeu de données d'entrée, Sashelp.Cars, et l'instruction DATA écrit les résultats dans le jeu de données de sortie mysas.cars. Cet exemple utilise l'instruction KEEP pour inclure uniquement les variables Make, Mpg et MSRP dans le jeu de données de sortie. SAS lit toutes les variables du jeu de données Sashelp.Cars en mémoire, puis supprime les variables indésirables lors de la création du jeu de données de sortie. Les variables MPG_City et MPG_Highway sont lues en mémoire par l'étape DATA et sont utilisées pour calculer la moyenne pondérée de la consommation de carburant, mais elles ne sont pas incluses dans la sortie.
Copié !
libname mysas "c:\Users\demo";
data cars;
set sashelp.cars;
keep make mpg MSRP;
Mpg=(MPG_City*.45)+(MPG_Highway*.55)/2;
run;
proc print data=cars(obs=10); run;
1
LIBNAME mysas "c:\Users\demo";
2
DATA cars;
3
SET sashelp.cars;
4
keep make mpg MSRP;
5
Mpg=(MPG_City*.45)+(MPG_Highway*.55)/2;
6
RUN;
7
PROC PRINTDATA=cars(obs=10); RUN;
2 Bloc de code
DATA STEP
Explication : Cet exemple utilise l'instruction WHERE pour sélectionner des observations basées sur les valeurs des variables age et height. Lorsque l'étape DATA exécute ce programme, elle ne lit pas chaque ligne du jeu de données d'entrée. L'utilisation de l'instruction WHERE peut améliorer l'efficacité de votre programme SAS lorsque l'étape DATA doit lire moins d'observations. Vous pouvez également utiliser l'option de jeu de données WHERE= pour sélectionner conditionnellement des observations dans le jeu de données d'entrée ou de sortie.
Copié !
data class;
set sashelp.class;
where age>12 and height>=67;
run;
proc print data=class; run;
1
DATA class;
2
SET sashelp.class;
3
where age>12 and height>=67;
4
RUN;
5
PROC PRINTDATA=class; RUN;
3 Bloc de code
DATA STEP Data
Explication : Dans cet exemple, l'étape DATA accède directement à une observation spécifique dans le jeu de données d'entrée et écrit la sortie dans un nouveau jeu de données en commençant par cette observation spécifiée. L'option de jeu de données FIRSTOBS= spécifie que les observations sont écrites dans le jeu de données de sortie, quakes2, à partir de l'observation numéro 5 du jeu de données d'entrée, Sashelp.quakes. Pour créer un jeu de données d'entrée pour cet exemple, l'étape DATA suivante est utilisée pour créer un sous-ensemble du jeu de données Sashelp.Quakes. L'étape DATA crée un sous-ensemble en sélectionnant conditionnellement les observations où les valeurs de la variable Magnitude sont supérieures à 6.0. Dans l'étape DATA suivante, l'option de jeu de données FIRSTOBS= est spécifiée dans l'instruction SET pour créer un nouveau jeu de données de sortie qui commence par l'observation 5 du jeu de données d'entrée. Le jeu de données de sortie contient toutes les observations restantes du jeu de données d'entrée.
Copié !
data quakes;
set sashelp.quakes(where=(Magnitude>6.0));
keep Depth Type Magnitude;
run;
proc print data=quakes; run;
data quakes2;
set quakes(firstobs=5);
run;
proc print data=quakes2; run;
1
DATA quakes;
2
SET sashelp.quakes(where=(Magnitude>6.0));
3
keep Depth Type Magnitude;
4
RUN;
5
PROC PRINTDATA=quakes; RUN;
6
7
DATA quakes2;
8
SET quakes(firstobs=5);
9
RUN;
10
PROC PRINTDATA=quakes2; RUN;
4 Bloc de code
DATA STEP Data
Explication : Dans cet exemple, l'étape DATA accède à une plage d'observations dans un jeu de données en utilisant les options de jeu de données FIRSTOBS= et OBS= ensemble. L'option de jeu de données FIRSTOBS= spécifie que les observations sont écrites dans le jeu de données de sortie, quakes2, à partir de l'observation numéro 2 du jeu de données d'entrée, Sashelp.quakes. L'option de jeu de données OBS= indique à SAS d'arrêter de traiter les observations après avoir lu un nombre spécifié d'observations. SAS utilise la formule suivante pour déterminer le nombre d'observations à lire lors de l'utilisation conjointe des options de jeu de données OBS= et FIRSTOBS= : (obs - firstobs) + 1 = nombre de lignes. Pour créer le jeu de données d'entrée pour cet exemple, la première étape DATA crée un sous-ensemble du jeu de données Sashelp.Quakes. La deuxième étape DATA crée une plage d'observations.
Copié !
data quakes;
set sashelp.quakes(where=(Magnitude>6.0));
keep Depth Type Magnitude;
run;
proc print data=quakes; run;
data quakes2;
set quakes(firstobs=2 obs=4);
run;
proc print data=quakes2; run;
1
DATA quakes;
2
SET sashelp.quakes(where=(Magnitude>6.0));
3
keep Depth Type Magnitude;
4
RUN;
5
PROC PRINTDATA=quakes; RUN;
6
7
DATA quakes2;
8
SET quakes(firstobs=2 obs=4);
9
RUN;
10
PROC PRINTDATA=quakes2; RUN;
5 Bloc de code
DATA STEP
Explication : Dans cet exemple, l'étape DATA accède directement à la troisième ligne du jeu de données Sashelp.Comet. Une variable numérique temporaire, num, est créée pour contenir la valeur de l'observation à laquelle accéder directement à partir du jeu de données Sashelp.Comet. L'instruction d'affectation crée la variable et lui attribue la valeur 3, qui représente la troisième observation du jeu de données Sashelp.Comet. Ensuite, l'option POINT= est spécifiée dans l'instruction SET et est définie comme étant égale à la variable temporaire num. L'instruction OUTPUT écrit l'observation courante dans le jeu de données de sortie Comet. L'instruction STOP est utilisée pour éviter le traitement continu de l'étape DATA. La routine CALL SYMPUT attribue le numéro de ligne à une variable macro qui peut être utilisée dans l'instruction TITLE pour indiquer la ligne à laquelle on accède. La première procédure PRINT ci-dessous est utilisée pour afficher les premières lignes du jeu de données d'entrée dans lequel la troisième ligne est directement accédée par l'étape DATA.
Copié !
proc print data=sashelp.comet(obs=5);
title "Sashelp.Comet Data Set";
run;
data comet;
num=3;
set sashelp.comet point=num;
call symput('num',num);
output;
stop;
run;
proc print data=comet;
title "Row &num from Sashelp.Comet Data Set";
run;
1
PROC PRINTDATA=sashelp.comet(obs=5);
2
title "Sashelp.Comet Data Set";
3
4
5
RUN;
6
7
DATA comet;
8
num=3;
9
SET sashelp.comet point=num;
10
call symput('num',num);
11
OUTPUT;
12
stop;
13
RUN;
14
15
PROC PRINTDATA=comet;
16
title "Row &num from Sashelp.Comet Data Set";
17
RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
« rivilégiez toujours les options de jeu de données (entre parenthèses après le nom de la table, ex: set mydata(keep=ID where=(age>20))) plutôt que les instructions dans le corps du programme. Cela force SAS à filtrer les données avant qu'elles n'entrent dans l'étape DATA, ce qui est nettement plus performant sur les serveurs de stockage distribués comme ceux de Viya »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.