SAS 过程 Rank/Proc SQL

SAS Proc Rank/Proc SQL

我有一个类似于

的数据集
data NATR332;
input Y1 Y2;
datalines;
146 141
141 143
135 139
142 139
140 140
143 141
138 138
137 140
142 142
136 138
run;`

我使用 proc sql 找出 Y1 和 Y2 之间的差异,并使用代码

删除差异为 0 的行
proc SQL;
/*create table temp as*/
select *,
Y1 - Y2 as Difference
from NATR332
where (Y1-Y2 ^= 0)
;

我现在想创建一个名为 rank 的新列,我在其中对差异的绝对值进行排名。我试着用 rank () over partition in proc sql 并没有任何运气,所以我想我可能不得不使用 proc rank 函数。我将如何着手创建这个专栏?我对 sql 比对 sas 更熟悉,所以我尝试在使用 sas 时在 proc sql 中完成我的大部分工作。

提前致谢。

我会做以下事情:

data diffs;
set NATR332;
difference = abs(Y1-Y2);
if difference ne 0;
run;

proc rank data=diffs descending out=diffs_ranked;
var difference;
ranks ranking;
run;

您有一个名为 diffs_ranked 的数据集和一个名为 ranking 的变量,它保存排名,由于降序选项从大到小。