SAS我可以向后进行SAS过程观察吗

SAS我可以向后进行SAS过程观察吗,sas,Sas,我知道Sas在处理数据集时从数据集顶部的观察开始,然后继续到下一个,直到到达底部观察,但是有没有一种简单的方法可以让Sas先处理底部观察,然后再向顶部移动?您当然可以将数据更改为相反的顺序,然后自上而下地处理。向充当索引的数据集添加一个变量。然后按该变量对数据集进行降序排序 data work.myData ; set work.myData ; indx = _n_ ; run ; proc sort data=work.myData ; by descending indx ; ru

我知道Sas在处理数据集时从数据集顶部的观察开始,然后继续到下一个,直到到达底部观察,但是有没有一种简单的方法可以让Sas先处理底部观察,然后再向顶部移动?

您当然可以将数据更改为相反的顺序,然后自上而下地处理。向充当索引的数据集添加一个变量。然后按该变量对数据集进行降序排序

data work.myData ;
 set work.myData ;
 indx = _n_ ;
run ;

proc sort data=work.myData ;
 by descending indx ;
run ;

您可以使用nobspoint向后处理它,而无需执行任何中间步骤。下面是一个例子:

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;

有关所有有趣的详细信息,请参见的第2页。

您可以使用PROC SQL在单步中翻转观察顺序:

proc sql;
   create table work.cars as
   select *
   from sashelp.cars
   order by monotonic() desc;
quit;
这里的关键是按单调()描述排序,翻译为“按观察值降序排序”

或者,您可以创建一个视图(而不是创建一个表),该视图将引用原始表,但顺序与观察编号相反:

proc sql;
   create view work.cars_rev as
   select *
   from sashelp.cars
   order by monotonic() desc;
quit;