我知道 Sas 在处理时从数据集顶部的观察开始,然后继续下一个直到它到达底部观察,但是有没有一种简单的方法可以让 sas 先处理底部观察,然后再到顶部?
sasnewbie
问问题
6378 次
3 回答
15
您可以使用nobs和point向后处理它,而无需执行任何中间步骤。这是一个例子:
data backwards;
do k= nobs to 1 by -1;
set sashelp.class nobs = nobs point=k;
output;
end;
stop;
run;
proc print data=sashelp.class;run;
proc print data=backwards;run;
有关所有详细信息,请参阅此 pdf的第 2 页。
于 2009-05-27T13:44:51.247 回答
8
您当然可以将数据更改为相反的顺序,然后自上而下处理。将变量添加到充当索引的数据集。然后按该变量对数据集进行降序排序。
data work.myData ;
set work.myData ;
indx = _n_ ;
run ;
proc sort data=work.myData ;
by descending indx ;
run ;
于 2009-05-27T13:27:40.920 回答
1
您可以使用 PROC SQL在一个步骤中翻转您的观察顺序:
proc sql;
create table work.cars as
select *
from sashelp.cars
order by monotonic() desc;
quit;
这里的关键是按 monotonic() desc排序,翻译为“按观察值降序排序”。
或者,您可以创建一个视图(而不是创建一个表),该视图将引用原始表,但以相反的观察编号顺序:
proc sql;
create view work.cars_rev as
select *
from sashelp.cars
order by monotonic() desc;
quit;
于 2019-03-08T00:23:34.910 回答