sas - 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 的新列,在其中对差异的绝对值进行排名。我尝试在 proc sql 中使用 rank () over partition 并且没有任何运气,所以我想我可能不得不使用 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
,用于保存排名,由于降序选项,排名从大到小。
推荐阅读
- javascript - D3 某些节点上的排斥力
- arrays - 谷歌金融货币上的谷歌表格数组函数
- javascript - 我想与滑块一起滑动/移动猫头鹰点
- java - 如何将字符串数组解析为不同的原始数组
- javascript - Chrome 扩展使用 React 重定向到 URL
- r - 如何处理面板数据上最纯的错误
- java - 有没有办法测试移动数据的可用性(如果启用它不保证我连接到互联网)?
- sap-cloud-platform - SuccessFactors 目标的密钥库位置上的 DestinationAccessException
- c++ - 在编译时而不是运行时创建一个由两个字节组成的值
- r - 增加Shiny中bsPopover制作的文本框的宽度