如何打印SAS数据集的最后一次观察结果?
我有一个包含1000个观测值的数据集。我只想把最后的观察结果打印出来。使用以下命令:如何打印SAS数据集的最后一次观察结果?,sas,Sas,我有一个包含1000个观测值的数据集。我只想把最后的观察结果打印出来。使用以下命令: proc print data=apple(firstobs = 1000 obs = 1000); run; 我能得到最后的观察结果。但我必须事先知道我的数据集有1000个观测值。我如何在不知道的情况下做到这一点?有很多方法可以做到这一点。这里有两个: proc sql noprint; select n(var1) into :nobs from apple; quit; proc print d
proc print data=apple(firstobs = 1000 obs = 1000);
run;
我能得到最后的观察结果。但我必须事先知道我的数据集有1000个观测值。我如何在不知道的情况下做到这一点?有很多方法可以做到这一点。这里有两个:
proc sql noprint;
select n(var1) into :nobs
from apple;
quit;
proc print data=apple(firstobs=&nobs); run;
这只是将观察数读取到宏变量中,然后使用它指定第一个观察值。(请注意,var1
指的是数据中的变量。)
另一种方法是创建一个只保留最后一次观察的数据视图,然后打印:
data tmp / view=tmp;
set apple nobs=nobs;
if _n_=nobs;
run;
proc print data=tmp; run;
有很多方法可以找到观察的数量;下面的宏就是一个例子
%macro nobs (dsn);
%let nobs=0;
%let dsid = %sysfunc(open(&dsn));
%if &dsid %then %let nobs = %sysfunc(attrn(&dsid,nobs));
%let rc = %sysfunc(close(&dsid));
&nobs
%mend nobs;
%let n = %nobs(apple);
proc print data=apple (firstobs=&n obs=&n); run;
我认为
SET
、MERGE
、MODIFY
或UPDATE
语句的end
选项非常有用
data x;
do i = 1 to 1000;
output;
end;
run;
data x;
set x end = _end;
end = _end;
proc print data = x;
where end;
run;
有两个简单的解决方案: 解决方案1:
data result;
set apple end=end;
if end then output;
run;
proc print data=result;
run;
解决方案2:
data result;
set apple nobs=nobs;
if _N_=nobs then output;
run;
proc print data=result;
run;
嗨,特雷弗,这里回答了“如何获得数据集中的观测值数量”的问题:任何正在学习SAS基础测试并最终来到这里的人都要小心——不要上当——这里没有LASTOBS选项!)