我是SAS的新手.现在,我有一个SAS数据表如下:
ID score
-------------------
01 1
02 3
03 4
04 2
Run Code Online (Sandbox Code Playgroud)
有没有办法只使用PROC SORT和DATA步骤来保存此表中的观察数量?我想在日志窗口中保存该值,就像SAS日志脚本中的"保持N = 4"一样.
对不起我的不专业描述.提前致谢.
作为新的SAS用户,NOBS选项可能就是您所需要的.但是,随着您的编码技能的提高,您可能会发现自己处于不适合的情况.SET语句中的NOBS选项可能无法在所有情况下使用.返回的值将是数据集中物理观测的数量,包括可能已就地删除的任何观测值.它也可能不适用于某些视图(尤其是连接到外部数据库的视图).
在数据集或视图中查找未删除的观察数量的"最安全"方法是使用PROC SQL并实际计算它们,将结果放入宏变量中.例如,假设您有一个名为HAVE的数据对象:
proc sql noprint;
select count(*) into : nobs
from WORK.HAVE;
quit;
%put 'Obs in data set:' &nobs;
Run Code Online (Sandbox Code Playgroud)
请注意,如果HAVE是数据集或视图,则此方法有效.
或者,如果object只是一个数据集,则可以使用SAS TABLES Dictionary视图返回NLOBS属性,该属性具有"逻辑"观察数(即任何已删除行的帐户):
proc sql noprint;
select nlobs into : nobs
from dictionary.tables
where libname='WORK'
and memname='HAVE';
quit;
%put 'Obs in data set:' &nobs;
Run Code Online (Sandbox Code Playgroud)
如果您的SAS数据集非常大,这肯定会更有效.我经常想知道为什么SAS不会在SET语句中将此NLOBS值作为选项提供,但我确信有理由.
PROC SQL,视图,宏变量和就地删除的观察结果对您来说可能都是新的,但随着您的SAS学习进展,您必然会开始使用它们.
nobs在 set 语句中使用=。
data _null_;
set xyz nobs=nobs;
put "HOLD N=" nobs ;
stop;
run;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60433 次 |
| 最近记录: |