SAS9

Tutorial de SAS: Dominar la ordenación de datos con PROC SORT

Simon 11 Aufrufe

La ordenación es una operación esencial en la gestión de bases de datos. Este tutorial le explica cómo utilizar el procedimiento SORT de SAS© para organizar sus registros, ya sea para preparar un informe o para limpiar datos antes del análisis.

Tutorial de SAS: Dominar la ordenación de datos con PROC SORT -

Para empezar: El conjunto de datos "Box Office"

Para que el ejercicio sea más concreto, vamos a trabajar con una base de datos de películas. Imaginemos una tabla que contiene la siguiente información:

  • Title (Título): El nombre de la película.

  • Director (Director): El nombre del director.

  • Studio (Estudio): La compañía de producción.

  • Budget_M (Presupuesto_M): El presupuesto de la película en millones de dólares.

  • Year (Año): El año de estreno.

Tutorial de SAS: Dominar la ordenación de datos con PROC SORT -

Aquí está el código para generar este conjunto de datos de ejemplo:

1DATA movies;
2 INFILE DATALINES dsd;
3 INPUT Title : $20. Director : $15. Studio : $15. Budget_M Year;
4 DATALINES;
5Inception,Nolan,Warner Bros,160,2010
6Tenet,Nolan,Warner Bros,200,2020
7Dune,Villeneuve,Warner Bros,165,2021
8Jaws,Spielberg,Universal,9,1975
9E.T.,Spielberg,Universal,10,1982
10Blade Runner 2049,Villeneuve,Warner Bros,150,2017
11Avatar,Cameron,Fox,237,2009
12Titanic,Cameron,Paramount,200,1997
13The Room,Wiseau,,6,2003
14.,Unknown,Indie,1,2020
15Metropolis,Lang,UFA,.,1927
16;
17RUN;
Tenga en cuenta que hemos incluido deliberadamente valores faltantes (un estudio faltante para "The Room", un presupuesto faltante para "Metropolis" y un título faltante).

Ordenar los datos con PROC SORT

Para invertir el orden (por ejemplo, ver las películas más recientes primero), se utiliza la palabra clave DESCENDING. Atención, esta palabra clave se coloca delante de la variable que modifica.

Ejemplo: Ordenar por Director (de la Z a la A) y luego por Presupuesto (del más caro al más barato).

1 
2PROC SORT
3DATA=movies out=sorted_movies;
4 
5BY descending Director descending Budget_M;
6 
7RUN;
8 
Si olvida el segundo DESCENDING delante de Budget_M, SAS© ordenará los presupuestos en orden ascendente por defecto, aunque los directores estén invertidos.

Recordatorio: No existe la palabra clave "ASCENDING". Si la escribe, SAS© devolverá un error.
Tutorial de SAS: Dominar la ordenación de datos con PROC SORT -

Preparar los datos para el procesamiento FIRST. y LAST.

Uno de los usos más potentes de la ordenación es preparar los datos para el paso DATA, para conservar solo "el mejor" o "el primero" de un grupo.

Imaginemos que queremos conservar únicamente la película más cara de cada director.

  1. Se ordena por Director.

  2. Se ordena por Presupuesto en orden descendente (para que el presupuesto más grande esté al principio de cada grupo).

1PROC SORT DATA=movies out=sorted_movies;
2 BY Director descending Budget_M;
3RUN;
4 
5DATA big_budget_only;
6 SET sorted_movies;
7 BY Director;
8 IF first.Director THEN OUTPUT;
9RUN;
El código if first.Director permite capturar la primera línea de cada nuevo director encontrado. Como hemos ordenado los presupuestos en orden descendente, esta primera línea corresponde mecánicamente a la película más cara.

Comparación: PROC SORT vs PROC SQL

Los desarrolladores acostumbrados a SQL (Structured Query Language) deben prestar atención a la sintaxis, ya que es inversa a la de SAS©.

En SAS© (PROC SORT): DESCENDING se coloca antes de la variable. En SQL (ORDER BY): DESC se coloca después de la variable.

Aquí está el equivalente en SQL:

1PROC SQL;
2 SELECT * FROM movies
3 ORDER BY Director DESC, Budget_M DESC;
4QUIT;
Regla mnemotécnica: "SORT antes, SQL después".
Tutorial de SAS: Dominar la ordenación de datos con PROC SORT -

La ordenación es una operación que consume memoria y tiempo de procesador. Si sus datos de películas ya provienen de un servidor SQL u Oracle, a menudo es preferible dejar que el servidor de la base de datos gestione la ordenación a través de su propia indexación en lugar de importar los datos desordenados para ordenarlos después con SAS©.