Statistics 如何计算SAS表中的观察数?
我是SAS的新手。现在,我有一个SAS数据表,如下所示:Statistics 如何计算SAS表中的观察数?,statistics,sas,Statistics,Sas,我是SAS的新手。现在,我有一个SAS数据表,如下所示: ID score ------------------- 01 1 02 3 03 4 04 2 是否有任何方法可以仅使用PROC SORT和DATA step保存此表中的观察数?我想在日志窗口中保存该值,就像SAS日志脚本中的“hold N=4” 对不起,我的描述不专业。提前感谢。使用set语句中的nobs= data
ID score
-------------------
01 1
02 3
03 4
04 2
是否有任何方法可以仅使用PROC SORT和DATA step保存此表中的观察数?我想在日志窗口中保存该值,就像SAS日志脚本中的“hold N=4”
对不起,我的描述不专业。提前感谢。使用set语句中的
nobs
=
data _null_;
set xyz nobs=nobs;
put "HOLD N=" nobs ;
stop;
run;
作为新的SAS用户,NOBS选项可能就是您所需要的全部。然而,随着编码技能的提高,您可能会发现自己处于不合适的情况下。SET语句上的NOBS选项可能在所有情况下都不起作用。返回的值将是数据集中的物理观测数,包括可能已被删除的任何观测值。它也可能不适用于某些视图(尤其是连接到外部数据库的视图) 查找数据集或视图中未删除的观察数的“最安全”方法是使用
PROC SQL
并实际计算它们,将结果放入宏变量中。例如,假设您有一个名为have的数据对象:
proc sql noprint;
select count(*) into : nobs
from WORK.HAVE;
quit;
%put 'Obs in data set:' &nobs;
注意:如果HAVE是一个数据集或一个视图,则此操作有效
或者,如果对象只是一个数据集,则可以使用SAS TABLES Dictionary视图返回NLOBS属性,该属性具有“逻辑”观察值的数量(即任何已删除行的帐户):
如果您的SAS数据集非常大,这肯定会更有效率。我经常想知道为什么SAS不在SET语句中将此NLOBS值作为选项提供,但我相信这是有原因的
PROC SQL、视图、宏变量和就地删除的观测值现在对您来说可能都是全新的,但随着SAS学习的深入,您一定会开始使用它们。data null
设置sashelp.vtable
其中libname=“WORK”和memname=“DS1”
呼叫symput(“计数”,nlobs)
运行
%将obs放入ds1是:&count\u obs 为什么要将自己限制在过程排序和数据步骤上?如果有很多表,速度会很慢
proc sql noprint;
select nlobs into : nobs
from dictionary.tables
where libname='WORK'
and memname='HAVE';
quit;
%put 'Obs in data set:' &nobs;