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é !
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 / 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é !
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 / 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é !
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 / 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é !
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 / 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é !
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.
« 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. »
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.