对数据集的相等值进行排序

Rank the equal values of a dataset

我是 sas 编程的新手,我有一个关于这个主题的问题。

Tengo una tabla de entrada así

  CODE DESCRIPTION   COUNT
  NULL    KIT-KAT      3           
  NULL    KIT-KAT      3           
  NULL    KIT-KAT      3           
  NULL    FERRERO      2           
  NULL    FERRERO      1           

我想要这样的输出 table:

  CODE DESCRIPTION   COUNT  COLUMN_I_WANT
  NULL    KIT-KAT      3           1
  NULL    KIT-KAT      3           2
  NULL    KIT-KAT      3           3
  NULL    FERRERO      2           1
  NULL    FERRERO      1           2

问题是我尝试按等级分组,我使用了 monotonic 并且我做了几件事,但是 none 其中对我有用,我希望它计算 a 的相等值字段但不重复该值,但在有 3 个重复值的情况下放入 1,2 ,3,如我在示例中输入的 table 中显示的那样。

这里我传递了我一直在测试的代码,它对我不起作用

proc sql;
create table test2 AS
select *, count(t2.descripcion_tpv) AS progressive
from rank_2 as t1
LEFT JOIN RANK_2 AS T2 ON (T1.DESCRIPCION_TPV = T2.DESCRIPCION_TPV)
GROUP BY t1.descripcion_tpv
ORDER BY t1.descripcion_tpv;
quit;

改用 by 组处理的数据步骤。

proc sort data=have;
    by description;
run;

data want;
    set have;
    by description;

    if(first.description) then rank = 0;

    rank+1;
run;

输出:

CODE    DESCRIPTION COUNT   rank
NULL    FERRERO     2       1
NULL    FERRERO     1       2
NULL    KIT-KAT     3       1
NULL    KIT-KAT     3       2
NULL    KIT-KAT     3       3

注意求和语句 rank+1 等同于:

retain rank 0;
rank = rank+1;