Les exemples utilisent des données générées via DATALINES ou des ensembles de données SASHELP, assurant l'autonomie de chaque script.
1 Bloc de code
DATA STEP
Explication : Cet exemple illustre l'utilisation basique de l'instruction `KEEP` dans une étape `DATA` s'exécutant sur CAS. Il charge d'abord l'ensemble de données `sashelp.cars` dans la bibliothèque `mycas` (située sur CAS), puis crée un nouvel ensemble de données `mycas.bigcars`. La clause `WHERE=(Weight > 6000)` est appliquée sur l'ensemble de données en entrée (`mycas.cars`) pour filtrer les observations, et l'instruction `KEEP Make Model Type;` garantit que seules les variables 'Make', 'Model' et 'Type' sont incluses dans `mycas.bigcars`. La table est ensuite affichée et nettoyée.
Copié !
libname mycas cas;
/* Charger l'ensemble de données Sashelp.Cars dans CAS */
data mycas.cars;
set sashelp.cars;
run;
/* Filtrer les voitures de gros poids et conserver un sous-ensemble de variables */
data mycas.bigcars;
set mycas.cars(where=(Weight > 6000));
keep Make Model Type;
run;
/* Afficher le résultat */
proc print data=mycas.bigcars;
run;
/* Nettoyer les tables CAS temporaires */
proc cas;
table.dropTable / caslib='CASUSER' name='cars';
table.dropTable / caslib='CASUSER' name='bigcars';
run;
quit;
1
LIBNAME mycas cas;
2
3
/* Charger l'ensemble de données Sashelp.Cars dans CAS */
4
DATA mycas.cars;
5
SET sashelp.cars;
6
RUN;
7
8
/* Filtrer les voitures de gros poids et conserver un sous-ensemble de variables */
Explication : Cet exemple montre une utilisation intermédiaire de `KEEP` avec une petite transformation. Une table `mycas.produits` est créée directement sur CAS à l'aide de `DATALINES`. Une deuxième étape `DATA` calcule `TotalValeur` pour chaque produit (`Prix * Quantite`), puis l'instruction `KEEP` est utilisée pour ne conserver que les variables 'Produit', 'Prix', 'Quantite' et la nouvelle variable calculée 'TotalValeur'. La table est ensuite affichée et nettoyée.
Copié !
libname mycas cas;
/* Création d'une table CAS simple avec DATALINES */
data mycas.produits;
input ID Produit $ Prix Quantite;
datalines;
1 Ordinateur 1200 5
2 Souris 25 50
3 Clavier 75 30
4 Ecran 300 10
5 Imprimante 150 15
;
run;
/* Calculer la valeur totale et conserver les variables pertinentes */
data mycas.stock_valeur;
set mycas.produits;
TotalValeur = Prix * Quantite;
keep Produit Prix Quantite TotalValeur;
run;
/* Afficher le résultat */
proc print data=mycas.stock_valeur;
run;
/* Nettoyer les tables CAS temporaires */
proc cas;
table.dropTable / caslib='CASUSER' name='produits';
table.dropTable / caslib='CASUSER' name='stock_valeur';
run;
quit;
1
LIBNAME mycas cas;
2
3
/* Création d'une table CAS simple avec DATALINES */
4
DATA mycas.produits;
5
INPUT ID Produit $ Prix Quantite;
6
DATALINES;
7
1 Ordinateur 12005
8
2 Souris 2550
9
3 Clavier 7530
10
4 Ecran 30010
11
5 Imprimante 15015
12
;
13
RUN;
14
15
/* Calculer la valeur totale et conserver les variables pertinentes */
Explication : Cet exemple explore un cas plus avancé de l'instruction `KEEP` avec une logique conditionnelle. Il charge `sashelp.class` sur CAS. Ensuite, il tente de conserver différentes variables en fonction du sexe de l'étudiant. Si le sexe est 'M', seules 'Name' et 'Age' sont conservées; sinon, 'Name', 'Height' et 'Weight' le sont. Bien que `KEEP` dans un bloc `DO` puisse avoir un comportement subtil (seules les variables explicitement nommées dans un `KEEP` ou `DROP` global sont initialement considérées, et les autres sont gérées par la portée), l'intention ici est de montrer une tentative de sélection dynamique. Pour une robustesse accrue dans des scénarios de sortie hétérogènes, des approches avec `DROP` ou `RENAME` combinées à des logiques plus explicites seraient préférables. La table est ensuite affichée et nettoyée.
Copié !
libname mycas cas;
/* Charger l'ensemble de données Sashelp.Class dans CAS */
data mycas.etudiants;
set sashelp.class;
run;
/* Conserver différentes variables selon une condition */
data mycas.resultat_etudiants;
set mycas.etudiants;
if Sex = 'M' then do;
keep Name Age;
end;
else do;
keep Name Height Weight;
end;
run;
/* Afficher le résultat (Note: le comportement de KEEP dans les blocs conditionnels peut être complexe.
SAS s'attend à ce que toutes les variables 'kept' soient définies globalement ou que le comportement
soit géré par des instructions 'DROP' pour être plus explicite. Cet exemple est simplifié pour illustrer.
Dans un cas réel, une approche avec DROP/RENAME serait plus robuste pour des sorties hétérogènes.) */
proc print data=mycas.resultat_etudiants;
run;
/* Nettoyer les tables CAS temporaires */
proc cas;
table.dropTable / caslib='CASUSER' name='etudiants';
table.dropTable / caslib='CASUSER' name='resultat_etudiants';
run;
quit;
1
LIBNAME mycas cas;
2
3
/* Charger l'ensemble de données Sashelp.Class dans CAS */
4
DATA mycas.etudiants;
5
SET sashelp.class;
6
RUN;
7
8
/* Conserver différentes variables selon une condition */
9
DATA mycas.resultat_etudiants;
10
SET mycas.etudiants;
11
IF Sex = 'M'THENDO;
12
keep Name Age;
13
END;
14
ELSEDO;
15
keep Name Height Weight;
16
END;
17
RUN;
18
19
/* Afficher le résultat (Note: le comportement de KEEP dans les blocs conditionnels peut être complexe.
20
SAS s'attend à ce que toutes les variables 'kept' soient définies globalement ou que le comportement
21
soit géré par des instructions 'DROP' pour être plus explicite. Cet exemple est simplifié pour illustrer.
22
Dans un cas réel, une approche avec DROP/RENAME serait plus robuste pour des sorties hétérogènes.) */
Explication : Cet exemple illustre l'utilisation de `KEEP` dans une étape `DATA` qui s'exécute entièrement sur l'environnement Cloud Analytic Services (CAS). Une table `mycas.vente_regionale` est créée directement sur CAS à partir de données en ligne (`DATALINES`). L'option `promote=yes` assure que cette table est rendue persistante au sein de la session CAS. Une deuxième étape `DATA` traite cette table CAS, en appliquant un filtre (`WHERE=(Revenu > 50000)`) sur l'ensemble de données d'entrée CAS et en utilisant l'instruction `KEEP` pour sélectionner spécifiquement les variables 'Region', 'Produit' et 'Revenu' pour la table de sortie `mycas.vente_details_filtre`, qui est également une table CAS. Cela démontre le traitement en mémoire distribuée et la sélection de variables via `KEEP` dans un contexte CAS natif. Les tables sont ensuite affichées et nettoyées.
Copié !
libname mycas cas;
/* Création d'une table CAS simple directement dans CAS à partir de DATALINES */
/* Cela garantit que la table est nativement CAS pour l'exemple. */
data mycas.vente_regionale (promote=yes); /* promote=yes rend la table persistante dans la session CAS */
input Region $ Produit $ UnitesVendues Revenu;
datalines;
Nord Ordinateur 100 120000
Sud Souris 250 6250
Est Clavier 150 11250
Ouest Ecran 50 15000
Nord Imprimante 75 11250
Sud Ordinateur 80 96000
;
run;
/* Traiter la table CAS avec l'étape DATA CAS, filtrer et conserver des variables */
/* L'étape DATA s'exécute sur CAS car l'entrée et la sortie sont des tables CAS. */
data mycas.vente_details_filtre;
set mycas.vente_regionale (where=(Revenu > 50000)); /* Filtrage sur la table CAS */
keep Region Produit Revenu; /* Conserver seulement ces variables */
run;
/* Afficher le résultat de la table traitée sur CAS */
proc print data=mycas.vente_details_filtre;
run;
/* Nettoyer les tables CAS temporaires de la session */
proc cas;
session casauto;
table.dropTable / caslib='CASUSER' name='vente_regionale';
table.dropTable / caslib='CASUSER' name='vente_details_filtre';
run;
quit;
1
LIBNAME mycas cas;
2
3
/* Création d'une table CAS simple directement dans CAS à partir de DATALINES */
4
/* Cela garantit que la table est nativement CAS pour l'exemple. */
5
DATA mycas.vente_regionale (promote=yes); /* promote=yes rend la table persistante dans la session CAS */
6
INPUT Region $ Produit $ UnitesVendues Revenu;
7
DATALINES;
8
Nord Ordinateur 100120000
9
Sud Souris 2506250
10
Est Clavier 15011250
11
Ouest Ecran 5015000
12
Nord Imprimante 7511250
13
Sud Ordinateur 8096000
14
;
15
RUN;
16
17
/* Traiter la table CAS avec l'étape DATA CAS, filtrer et conserver des variables */
18
/* L'étape DATA s'exécute sur CAS car l'entrée et la sortie sont des tables CAS. */
19
DATA mycas.vente_details_filtre;
20
SET mycas.vente_regionale (where=(Revenu > 50000)); /* Filtrage sur la table CAS */
21
keep Region Produit Revenu; /* Conserver seulement ces variables */
22
RUN;
23
24
/* Afficher le résultat de la table traitée sur CAS */
25
PROC PRINTDATA=mycas.vente_details_filtre;
26
RUN;
27
28
/* Nettoyer les tables CAS temporaires de la session */
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.
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.