Monográfico. Datos agrupados en SAS
Noviembre 6th, 2009 | por rvaquerizo |A continuación os planteo un monográfico más orientado a principiantes con SAS. Vamos a realizar un acercamiento a los conjuntos de datos SAS agrupados por variables. La premisa fundamental es: un conjunto de datos SAS está agrupado por una variable si está ordenado por ella. Para ordenar variables empleamos el PROC SORT:
PROC SORT DATA=
BY (DESCENDING)
RUN;
Repetimos un conjunto de datos SAS puede agruparse por una o varias variables si está ordenado por ellas. Algunas de las posibilidades que nos ofrecen este tipo de conjuntos de datos son:
• Buscar máximos y mínimos por grupos
• Crear ranking por grupos
• Realizar sumarizaciones
• Unir conjuntos de datos
Para ilustrar esto ejemplos vamos a emplear un conjunto de datos SAS de la librería SASHELP llamado SHOES que todos tenemos en nuestra sesión y que contiene las siguientes variables:
# Variable
1 Region
2 Product
3 Subsidiary
4 Stores
5 Sales
6 Inventory
7 Returns
La primera tarea encomendada es encontrar el mínimo y el máximo número de tiendas por producto en el total de las regiones:
data ejemplo;
set sashelp.shoes;
proc sort data=ejemplo; by product stores; quit;
proc freq; tables product; quit;
Trabajamos con una copia del dataset de SASHELP y lo primero es realizar la ordenación por la variable que nos agrupa nuestra tabla y después por la variable que deseamos estudiar. Con FREQ realizamos una tabla de frecuencias y observamos que tenemos 8 grupos, 8 tipos de productos. Una vez realizada la ordenación a la hora de leer el dataset hemos de emplear la instrucción BY:
data minimos_maximos;
set ejemplo;
by product;
if first.product then minimo=stores;
if last.product then maximo=stores;
if minimo ne . or maximo ne .; drop stores--Returns;
run;
proc print; quit;
Al emplear la instrucción BY disponemos de dos nuevas variables de sistema que sólo aparecen durante la ejecución del paso data: FIRST.
Otra de las tareas habituales con conjuntos de datos agrupados es la realización de ranking por grupo. Si, por ejemplo, deseamos realizar un ranking de ventas por región tendremos que hacer:
proc sort data=ejemplo; by region sales; quit;
data ranking;
set ejemplo;
by region;
retain posicion ;
if first.region then posicion=1;
else posicion=posicion+1;
run;
Lo primero es ordenar por región y descendentemente por ventas. En este ejemplo empleamos una nueva instrucción RETAIN
Si deseamos crear sumarizaciones la metodología será igual que la anterior:
proc sort data=ejemplo; by region sales; quit;
data suma_region;
set ejemplo;
by region;
retain total_ventas;
if first.region then total_ventas=sales;
else total_ventas=sum(total_ventas,sales);
if last.region then output;
keep region total_ventas;
run;
La unión de conjuntos de datos SAS tendremos que analizarla en capítulos posteriores, pero es imprescindible recordar que, para unir conjuntos de datos SAS éstos han de estar agrupados por la variable que realiza la unión. Como siempre si tenéis cualquier duda, sugerencia o trabajo a tiempo parcial que me permita jugar más tiempo con mis hijos podéis contactar conmigo en rvaquerizo@analisisydecsision.es