means freq ejemplo contents order sas series proc

order - contents - proc freq ejemplo



SAS 9.3 Problemas de Clasificación de Proc.(Clasificar/Clasificar bloque de ruta) (3)

Estoy trabajando con un conjunto de datos en este formato:

Column 1 (What I Have), Column 2 (What I need to see) 8 1 8 1 8 1 9 2 9 2 9 2 10 3 10 3 10 3 11 4 11 4 12 5 13 6 14 7 14 7 14 7

Intenta usar el rango de Proc para generar el segundo código de columna:

Proc Rank data=Have out=Want ties=low; Var Column1; ranks Column2; run;

La salida que recibo se ve así:

Column1 (What I Have) Column2 (What I get) 8 1 8 1 8 1 9 199 9 199 9 199 10 415 10 415 10 415 11 613 11 613 12 823 13 1015 14 1222 14 1222 14 1222

Según lo que he leído y escuchado, el primer conjunto de datos es lo que espero sea mi resultado.

¿Hay un error en el código o las expectativas que ha llevado a un resultado como el que estoy viendo? Además, ¿existe una mejor manera de generar un rango secuencial para una columna de datos numéricos secuenciales?


Alternativamente con una retención implícita.

DATA WANT; SET HAVE; BY COLUMN1; IF _N_ = 0 THEN COLUMN2 = 0; IF FIRST.COLUMN1 THEN COLUMN2 + 1; RUN;


Puede hacer esto en un Paso de datos suponiendo que está bien ordenar por Columna1.

proc sort data=have; by column1; run; data want; set have; by column1; retain column2 ; if _n_ = 0 then column2 = 0; if first.column1 then column2 = column2 + 1; run;


Quería decirte que descubrí cómo usar esto.

La clave está en la declaración Ties = (Low o High o Mean or Dense).

Aquí está el Nuevo Código que Funciona.

Proc Rank data=Have out=Want ties=dense; Var Column1; ranks Column2; run;

Ahora Mi conjunto de datos agrupa todos los valores similares y les da el mismo conteo. La columna 2 se genera con los valores adecuados. La documentación está aquí:

http://support.sas.com/documentation/cdl/en/proc/61895/HTML/default/viewer.htm#a000146840.htm#a003186386

Desplácese hasta la parte inferior para ver las características de Ties