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
的变量,它保存排名,由于降序选项从大到小。
我有一个类似于
的数据集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
的变量,它保存排名,由于降序选项从大到小。