SAS FIRSTOBS para obtener filas en particular,

Programacion SAS 3

En mi trabajo con la programación SAS me he topado con la necesidad de obtener de un DATA un determinado segmento de número de filas, es decir, requiero las primeras 20, o las ultimas 10 o de la fila 30 a la 40, por mencionar algunos ejemplos. A continuación les presento los códigos que me ayudaron a solventar el caso.

 

Ordenamiento General:

PROC SORT
    DATA = ALUMNOS;
    BY DESCENDING PROMEDIO;
RUN;

Agregar una variable con el mismo valor del numero de la fila.

DATA ALUMNOS;
    SET ALUMNOS;
    FILA = _N_;
RUN;
DATA MEJORES PEORES INTERMEDIOS;
    SET ALUMNOS;
    IF FILA < 100 THEN OUTPUT MEJORES;
    IF FILA > 900 THEN OUTPUT PEORES;
    IF FILA >= 400 AND FILA <= 600 THEN OUTPUT INTERMEDIOS;
RUN;

 

Utilizando el valor de la fila.

DATA MEJORES;
 SET ALUMNOS (FIRSTOBS = 1 OBS = 100);
RUN;
DATA PEORES;
 SET ALUMNOS (FIRSTOBS = 900 OBS = 1000);
RUN;
DATA INTERMEDIOS;
 SET ALUMNOS (FIRSTOBS = 400 OBS = 600);
RUN;

 

Resultado:

La base MEJORES contiene a los primeros 100 alumnos con mejor promedio, la base PEORES contiene a los peores 100 alumnos, y la base INTERMEDIOS contiene a 200 alumnos posicionados en el centro de la base.


¿Que te parecio el contenido?