我是 sas 编程新手,我对这个主题有疑问。
我有一个像这样的输入表
CODE DESCRIPTION COUNT
NULL KIT-KAT 3
NULL KIT-KAT 3
NULL KIT-KAT 3
NULL FERRERO 2
NULL FERRERO 1
我想要一个像这样的输出表:
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
问题是我尝试用排名进行分组,我使用了单调,并且做了几件事,但没有一个对我有用,我希望它计算一个字段的相等值但不重复该值,但如果有 3 个重复值,则输入 1,2 ,3,如我在示例中放入的表中所示。
这里我传递了我一直在测试的代码,但它对我不起作用
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
请注意,sum 语句
rank+1
相当于:
retain rank 0;
rank = rank+1;