我有一个类似于
的数据集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的新列,在该列中对差异的绝对值进行排名。我尝试使用 在proc sql中的分区上排名() 而且没有任何运气,所以我想我可能必须使用proc rank函数。我将如何创建此列?我对SQL的了解远比对sas更为熟悉,因此我尝试使用sas时在proc sql中完成大部分工作。
谢谢。
答案 0 :(得分:0)
我将执行以下操作:
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
的变量,该变量可以保留排名,由于降序选择,因此排名从大到小。