Publicado el :
Manipulación de Datos CREATION_INTERNE

Conservar Variables en un Paso DATA CAS

Este código también está disponible en: Deutsch English Français
En espera de validación
La instrucción `KEEP` permite especificar explícitamente las variables a incluir en el nuevo conjunto de datos creado por el paso DATA. Todas las demás variables se excluyen automáticamente. Es crucial tener en cuenta que, cuando el paso DATA se ejecuta en el entorno CAS, la opción `WHERE=` solo se puede aplicar al conjunto de datos de entrada (en la instrucción `SET`). Intentar usar `WHERE=` en la instrucción `DATA` misma (por ejemplo, `data mycas.table(where=...);`) provocará un error. Esta es una distinción importante en comparación con la ejecución del paso DATA en SAS© tradicional. Las instrucciones `DROP` y `KEEP` son ambas compatibles en un paso DATA CAS.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos generados a través de DATALINES o conjuntos de datos SASHELP, lo que garantiza la autonomía de cada script.

1 Bloque de código
DATA STEP
Explicación :
Este ejemplo ilustra el uso básico de la instrucción `KEEP` en un paso `DATA` que se ejecuta en CAS. Primero carga el conjunto de datos `sashelp.cars` en la biblioteca `mycas` (ubicada en CAS), luego crea un nuevo conjunto de datos `mycas.bigcars`. La cláusula `WHERE=(Weight > 6000)` se aplica al conjunto de datos de entrada (`mycas.cars`) para filtrar las observaciones, y la instrucción `KEEP Make Model Type;` garantiza que solo las variables 'Make', 'Model' y 'Type' se incluyan en `mycas.bigcars`. La tabla se muestra y se limpia a continuación.
¡Copiado!
1LIBNAME mycas cas;
2 
3/* Charger l'ensemble de données Sashelp.Cars dans CAS */
4DATA mycas.cars;
5 SET sashelp.cars;
6RUN;
7 
8/* Filtrer les voitures de gros poids et conserver un sous-ensemble de variables */
9DATA mycas.bigcars;
10 SET mycas.cars(where=(Weight > 6000));
11 keep Make Model Type;
12RUN;
13 
14/* Afficher le résultat */
15PROC PRINT DATA=mycas.bigcars;
16RUN;
17 
18/* Nettoyer les tables CAS temporaires */
19PROC CAS;
20 TABLE.dropTable / caslib='CASUSER' name='cars';
21 TABLE.dropTable / caslib='CASUSER' name='bigcars';
22RUN;
23QUIT;
2 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo muestra un uso intermedio de `KEEP` con una pequeña transformación. Se crea una tabla `mycas.produits` directamente en CAS utilizando `DATALINES`. Un segundo paso `DATA` calcula `TotalValeur` para cada producto (`Prix * Quantite`), y luego la instrucción `KEEP` se utiliza para conservar solo las variables 'Produit', 'Prix', 'Quantite' y la nueva variable calculada 'TotalValeur'. La tabla se muestra y se limpia a continuación.
¡Copiado!
1LIBNAME mycas cas;
2 
3/* Création d'une table CAS simple avec DATALINES */
4DATA mycas.produits;
5 INPUT ID Produit $ Prix Quantite;
6 DATALINES;
71 Ordinateur 1200 5
82 Souris 25 50
93 Clavier 75 30
104 Ecran 300 10
115 Imprimante 150 15
12;
13RUN;
14 
15/* Calculer la valeur totale et conserver les variables pertinentes */
16DATA mycas.stock_valeur;
17 SET mycas.produits;
18 TotalValeur = Prix * Quantite;
19 keep Produit Prix Quantite TotalValeur;
20RUN;
21 
22/* Afficher le résultat */
23PROC PRINT DATA=mycas.stock_valeur;
24RUN;
25 
26/* Nettoyer les tables CAS temporaires */
27PROC CAS;
28 TABLE.dropTable / caslib='CASUSER' name='produits';
29 TABLE.dropTable / caslib='CASUSER' name='stock_valeur';
30RUN;
31QUIT;
3 Bloque de código
DATA STEP
Explicación :
Este ejemplo explora un caso más avanzado de la instrucción `KEEP` con lógica condicional. Carga `sashelp.class` en CAS. Luego, intenta conservar diferentes variables según el sexo del estudiante. Si el sexo es 'M', solo se conservan 'Name' y 'Age'; de lo contrario, se conservan 'Name', 'Height' y 'Weight'. Aunque `KEEP` en un bloque `DO` puede tener un comportamiento sutil (solo las variables nombradas explícitamente en un `KEEP` o `DROP` global se consideran inicialmente, y las demás se gestionan por el alcance), la intención aquí es mostrar un intento de selección dinámica. Para una mayor robustez en escenarios de salida heterogéneos, serían preferibles enfoques con `DROP` o `RENAME` combinados con lógicas más explícitas. La tabla se muestra y se limpia a continuación.
¡Copiado!
1LIBNAME mycas cas;
2 
3/* Charger l'ensemble de données Sashelp.Class dans CAS */
4DATA mycas.etudiants;
5 SET sashelp.class;
6RUN;
7 
8/* Conserver différentes variables selon une condition */
9DATA mycas.resultat_etudiants;
10 SET mycas.etudiants;
11 IF Sex = 'M' THEN DO;
12 keep Name Age;
13 END;
14 ELSE DO;
15 keep Name Height Weight;
16 END;
17RUN;
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.) */
23PROC PRINT DATA=mycas.resultat_etudiants;
24RUN;
25 
26/* Nettoyer les tables CAS temporaires */
27PROC CAS;
28 TABLE.dropTable / caslib='CASUSER' name='etudiants';
29 TABLE.dropTable / caslib='CASUSER' name='resultat_etudiants';
30RUN;
31QUIT;
4 Bloque de código
DATA STEP Data
Explicación :
Este ejemplo ilustra el uso de `KEEP` en un paso `DATA` que se ejecuta completamente en el entorno de Cloud Analytic Services (CAS). Se crea una tabla `mycas.vente_regionale` directamente en CAS a partir de datos en línea (`DATALINES`). La opción `promote=yes` asegura que esta tabla se haga persistente dentro de la sesión CAS. Un segundo paso `DATA` procesa esta tabla CAS, aplicando un filtro (`WHERE=(Revenu > 50000)`) al conjunto de datos de entrada CAS y utilizando la instrucción `KEEP` para seleccionar específicamente las variables 'Region', 'Produit' y 'Revenu' para la tabla de salida `mycas.vente_details_filtre`, que también es una tabla CAS. Esto demuestra el procesamiento en memoria distribuida y la selección de variables a través de `KEEP` en un contexto CAS nativo. Las tablas se muestran y se limpian a continuación.
¡Copiado!
1LIBNAME 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. */
5DATA mycas.vente_regionale (promote=yes); /* promote=yes rend la table persistante dans la session CAS */
6 INPUT Region $ Produit $ UnitesVendues Revenu;
7 DATALINES;
8Nord Ordinateur 100 120000
9Sud Souris 250 6250
10Est Clavier 150 11250
11Ouest Ecran 50 15000
12Nord Imprimante 75 11250
13Sud Ordinateur 80 96000
14;
15RUN;
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. */
19DATA 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 */
22RUN;
23 
24/* Afficher le résultat de la table traitée sur CAS */
25PROC PRINT DATA=mycas.vente_details_filtre;
26RUN;
27 
28/* Nettoyer les tables CAS temporaires de la session */
29PROC CAS;
30 SESSION casauto;
31 TABLE.dropTable / caslib='CASUSER' name='vente_regionale';
32 TABLE.dropTable / caslib='CASUSER' name='vente_details_filtre';
33RUN;
34QUIT;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.
Información de copyright : Copyright © SAS Institute Inc. All Rights Reserved.