En esta entrega del curso vamos a trabajar con dos palabras fundamentales en WPS: DROP y KEEP. Drop elimina variables de un conjunto de datos y keep las mantiene. Ahora bien, estos elementos del lenguaje SAS se pueden emplear de diversas formas. Pueden ser una sentencia o pueden ser una opción de lectura y escritura del paso data. Para ilustrar este capítulo vamos a generar un dataset con datos aleatorios:
data aleatorio;
input id importe1 importe2 importe3 importe4 importe5;
cards;
1 894.4 389.1 218.5 488.2 203.2
2 63.6 299.2 323.8 820.7 183.7
3 235.9 716.0 761.7 800.4 706.7
4 425.5 180.6 867.5 665.3 226.1
5 249.9 360.9 91.4 435.2 194.8
6 853.3 566.3 759.0 78.9 559.4
7 738.2 322.1 660.2 55.0 682.4
8 961.4 891.1 680.2 863.4 824.2
9 31.3 610.8 840.7 399.9 878.4
10 359.5 440.8 57.5 562.9 886.1
11 73.5 305.4 277.4 348.4 739.0
12 962.9 609.8 285.9 409.2 89.3
13 691.2 569.2 203.6 345.9 196.1
14 737.5 582.0 691.4 558.0 978.2
15 91.0 263.8 820.7 434.6 709.0
;run;
KEEP/DROP como sentencia:
Una sentencia en WPS es una línea de código y en este caso empezará por alguna de nuestras palabras clave. A ellas le acompañarán aquellas variables que deseemos eliminar con DROP o que deseemos mantener con KEEP:
data uso_keep;
set aleatorio;
keep id importe1;
run;
Creamos un dataset USO_KEEP que es resultado de leer ALEATORIO. En este caso KEEP “mantiene” las variables ID e IMPORTE1. De forma análoga podemos emplear DROP como sentencia para eliminar variables:
data uso_drop;
set aleatorio;
drop importe2 importe3 importe4 importe5;
run;
El dataset USO_DROP también es un subconjunto de ALEATORIO y hemos eliminado las variables IMPORTE2 a IMPORTE5. En este punto es interesante indicaros que podemos realizar listas de variables SAS que nos faciliten el uso de DROP o KEEP. Imaginemos que deseamos eliminar un rango de variables (como en el ejemplo anterior). La lista de variables en WPS se genera con guiones de forma VARIABLE_INICIO – VARIABLE_FIN:
data uso_drop2;
set aleatorio;
drop importe2 -- importe5;
run;
Otro elemento importante para generar listas de variable son los dos puntos : con ellos podremos crear listas de variables en función de un sufijo, si deseamos quedarnos con aquellas variables que empiezan por IMP hacemos IMP: como vemos en el ejemplo:
data uso_keep2;
set aleatorio;
keep imp:;
run;
Seleccionamos todas aquellas variables que empiezan por IMP:.
DROP y KEEP como opciones de lectura y escritura:
Como ya indicamos en una entrega anterior un paso data es una creación de una estructura de datos y posteriormente un bucle que lee y escribe datos en esa estructura. La fase de lectura y escritura podemos optimizarla empleando DROP o KEEP. Leer o escribir sólo aquellas variables que deseamos, no es necesario crear estructuras con más variables o leer todas las variables. Veamos los ejemplos:
data uso_keep3 (keep=id importe1);
set aleatorio;
run;
data uso_drop3 (drop=imp:);
set aleatorio;
run;
Estas son opciones de escritura, están dentro de la sentencia DATA y entre paréntesis ponemos DROP o KEEP = variables que deseamos mantener o eliminar. Del mismo modo podemos emplear opciones de lectura:
data uso_keep4 ;
set aleatorio (keep=id importe1);
run;
data uso_drop4 ;
set aleatorio (drop=imp:);
run;
Por supuesto podemos emplear ambas opciones. Siempre es más óptimo emplear DROP o KEEP como opciones de lectura y escritura. Como sentencia las ejecuciones pueden ser más lentas.En la siguiente entrega vamos a realizar sentencias condicionales en SAS con IF THEN ELSE. Además veremos como generar más de un conjunto de datos WPS en un mismo paso data con la instrucción OUTPUT.