温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - SAS how to Dense_rank
sas

其他 - SAS如何进行Dense_rank

发布于 2020-04-14 17:12:38

我是sa的新手,我曾经做过oracle SQL

我之前也做了类似的问题

如何对SAS进行技巧排名?

我以为这个问题可以解决问题。

我被困。

所以我的代码是这样

data stepstep;
   input emplid KEY:$3. count;
   cards;
11 11Y    1
11 11Y    2
11 11N    3
11 11N    4
11 11Y    5
11 11N    6
12 12Y    1
12 12Y    2
12 12N    3
;
run;

然后我尝试

data stepstep2;
   set stepstep;
   by key  emplid NOTSORTED;
   if first.key AND first.emplidthen rank=1;
     ELSE rank+1;
   run;

输出是这个

在此处输入图片说明

我想展示

emplid  key   count  rank
11      11Y    1      1
11      11Y    2      1
11      11N    3      2 
11      11N    4      2
11      11Y    5      3
11      11N    6      4
12      12Y    1      1
12      12Y    2      1
12      12N    3      2

所以新的经验来了,我想让“排名”从1开始倒数。

因此,在本例中,当第一个母词“ 12”到来时,等级又回到了1

我怎样才能做到这一点?

查看更多

提问者
supercool djkazu
被浏览
85
Reeza 2020-02-03 23:46

您需要适当地利用BY组,我认为对于初学者而言,它们的顺序不正确。尝试以下方法:

    data stepstep2;
       set stepstep;
       by emplid KEY NOTSORTED;

       if first.emplid then rank=1; *start of each emplid group;
       ELSE if first.key rank+1; *start of each new key;

    run;