Publié le :

Exemples : Contrôler les Variables et Observations dans les Jeux de Données

Ce code est également disponible en : Deutsch English Español
Analyse fonctionnelle détaillée expliquant l'utilisation de l'instruction KEEP pour retenir des variables spécifiques, l'instruction WHERE pour filtrer les observations selon des critères définis, et les options FIRSTOBS=, OBS= et POINT= pour contrôler le début, la fin ou l'accès direct à des observations spécifiques dans un jeu de données.
Analyse des données

Type : CREATION_INTERNE


Les exemples utilisent des jeux de données SASHELP (sashelp.cars, sashelp.class, sashelp.quakes, sashelp.comet) ou des créations de données internes, rendant les exemples autonomes.

1 Bloc de code
DATA STEP / PROC PRINT
Explication :
Cet exemple utilise l'instruction KEEP pour spécifier que seules les variables 'Make', 'Mpg' et 'MSRP' doivent être incluses dans le jeu de données de sortie 'cars'. Une nouvelle variable 'Mpg' est calculée en tant que moyenne pondérée de 'MPG_City' et 'MPG_Highway'. Le jeu de données 'mysas.cars' est ensuite imprimé, limité aux 10 premières observations.
Copié !
1LIBNAME mysas "c:\Users\demo";
2DATA cars;
3 SET sashelp.cars;
4 keep make mpg MSRP;
5 Mpg=(MPG_City*.45)+(MPG_Highway*.55)/2;
6RUN;
7PROC PRINT DATA=cars(obs=10); RUN;
2 Bloc de code
DATA STEP / PROC PRINT
Explication :
Cet exemple utilise l'instruction WHERE pour sélectionner les observations du jeu de données 'sashelp.class' où la valeur de 'age' est supérieure à 12 et la valeur de 'height' est supérieure ou égale à 67. Seules les observations répondant à ces critères sont lues et écrites dans le jeu de données 'class', améliorant ainsi l'efficacité du programme. Une option alternative WHERE= peut être utilisée directement dans l'option du jeu de données SET.
Copié !
1DATA class;
2 SET sashelp.class;
3 where age>12 and height>=67;
4RUN;
5PROC PRINT DATA=class; RUN;
3 Bloc de code
DATA STEP / PROC PRINT
Explication :
Cet exemple crée d'abord un sous-ensemble du jeu de données 'sashelp.quakes' où la 'Magnitude' est supérieure à 6.0. Ensuite, l'option FIRSTOBS=5 est utilisée dans l'instruction SET pour indiquer que le traitement et l'écriture dans le nouveau jeu de données 'quakes2' doivent commencer à partir de la cinquième observation du jeu de données 'quakes'. Le reste des observations du jeu de données d'entrée est inclus.
Copié !
1DATA quakes;
2 SET sashelp.quakes(where=(Magnitude>6.0));
3 keep Depth Type Magnitude;
4RUN;
5PROC PRINT DATA=quakes; RUN;
6 
7DATA quakes2;
8 SET quakes(firstobs=5);
9RUN;
10PROC PRINT DATA=quakes2; RUN;
4 Bloc de code
DATA STEP / PROC PRINT
Explication :
Cet exemple illustre l'utilisation combinée des options FIRSTOBS= et OBS= pour lire une plage spécifique d'observations. Après avoir créé un sous-ensemble 'quakes', le second DATA step lit le jeu de données 'quakes' en commençant par la deuxième observation (FIRSTOBS=2) et s'arrêtant après la quatrième observation (OBS=4). Cela génère un jeu de données de sortie 'quakes2' contenant les observations 2, 3 et 4.
Copié !
1DATA quakes;
2 SET sashelp.quakes(where=(Magnitude>6.0));
3 keep Depth Type Magnitude;
4RUN;
5PROC PRINT DATA=quakes; RUN;
6 
7DATA quakes2;
8 SET quakes(firstobs=2 obs=4);
9RUN;
10PROC PRINT DATA=quakes2; RUN;
5 Bloc de code
DATA STEP / PROC PRINT
Explication :
Cet exemple utilise l'option POINT= dans l'instruction SET pour accéder directement à une observation spécifique (la troisième) du jeu de données 'sashelp.comet'. Une variable temporaire 'num' est assignée à 3, et POINT=num indique à SAS d'accéder à cette observation. L'instruction OUTPUT écrit l'observation et STOP est utilisée pour empêcher le traitement continu de l'étape DATA, car POINT= ne détecte pas la fin de fichier. Un TITLE est dynamiquement généré.
Copié !
1PROC PRINT DATA=sashelp.comet(obs=5);
2title "Sashelp.Comet Data Set";
3 
4 
5RUN;
6 
7DATA comet;
8 num=3;
9 SET sashelp.comet point=num;
10 call symput('num',num);
11 OUTPUT;
12 stop;
13RUN;
14 
15PROC PRINT DATA=comet;
16title "Row &num from Sashelp.Comet Data Set";
17RUN;
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.
Informations de Copyright : Copyright © SAS Institute Inc. All Rights Reserved


Banner
Le Conseil de l'Expert
Expert
Michael
Responsable de l'infrastructure Viya.
« Pour une performance maximale sur des volumes massifs, privilégiez toujours l'option de jeu de données SET mydata(WHERE=(...)). Cela permet de filtrer les données avant qu'elles n'entrent dans l'étape DATA, économisant ainsi de précieux cycles CPU et de la mémoire vive. »