问题描述
最初,我尝试在此处包括一个示例SAS表,但无法使脚本在应有的位置换行-感谢您是否可以让我知道如何在输入文本编辑器时手动插入换行符,谢谢
我的问题
对于SAS PROC sql-如何返回第4个最高记录(即排序后-像清单/资产列表一样)? (即我不希望第一,第二或第三,因此不使用outobs =)
类似地,sql的语法是什么(可能与SAS PROC sql不同)-我相信它可以利用LIMIT参数?
感谢您的帮助
解决方法
在数据步骤中,您可以使用自动_N_
变量。对于SQL,SAS中有一个未记录的函数,称为monotonic()
。它给您记录号。以下是您需要做的几种方法:
data blah;
letter = "ay "; number = 2; output;
letter = "bea"; number = 3; output;
letter = "see"; number = 42; output;
letter = "Dea"; number = 99; output;
letter = "Eee"; number = 1; output;
run;
data new;
set blah;
theN = _N_; * if you want to save the record number;
if theN = 4;
run;
proc sql;
create table new2 as
select blah.*,monotonic() as theN
from blah
having (theN = 4)
;
quit;
如果未对数据进行排序,则可以使用order by子句对其进行排序:
proc sql;
create table ordered as
select * from blah order by letter;
create table new2 as
select ordered.*,monotonic() as theN
from ordered
having (theN = 4);
drop table work.ordered;
quit;
如果数据为数字,则还可以使用proc排名。
data blah;
letter = "ay "; number = 2; output;
letter = "bea"; number = 3; output;
letter = "see"; number = 42; output;
letter = "Dea"; number = 99; output;
letter = "Eee"; number = 1; output;
run;
proc rank data = blah out = new3 (where = (theRank = 4));
var number;
ranks theRank;
run;