Statistics 如何计算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

我是SAS的新手。现在,我有一个SAS数据表,如下所示:

    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;