SAS 9.3过程排名问题(排名/排序路障)

SAS 9.3过程排名问题(排名/排序路障),sas,series,proc,Sas,Series,Proc,我正在使用以下格式的数据集: 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 正在尝试使用Proc Rank生成第二列 代码: 我得到的输出如下所示: Column1 (What I Have) Column2 (What I get

我正在使用以下格式的数据集:

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
正在尝试使用Proc Rank生成第二列 代码:

我得到的输出如下所示:

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
根据我所读到的和听到的,第一个数据集就是我所期望的结果

代码或期望中是否有错误导致了我看到的输出?
此外,是否有更好的方法为一列连续数字数据生成序列秩?

您可以在数据步骤中执行此操作,前提是可以按Column1排序

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;

或者用暗示保留

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

我想让你知道我知道如何使用这个

关键是Ties=(低或高或平均或密集)语句

下面是新的代码

Proc Rank data=Have
out=Want
ties=dense;
Var Column1; 
ranks Column2;
run;
现在,我的数据集组都喜欢值,并给出相同的计数。使用正确的值生成第2列。文件如下:


滚动至底部查看领带的功能

在查看我的陈述后,我想我需要澄清一下。我想生成第2列。为了回答您的问题@DomPazz yes,我们可以(并且确实)在第1栏排序。在回顾我的陈述之后,我想我需要澄清一下。我想生成第2列,它不在数据集中。为了回答您的问题,是的,我们可以(并且确实)对第1列进行排序。这将创建第2列。
Proc Rank data=Have
out=Want
ties=dense;
Var Column1; 
ranks Column2;
run;