首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在SAS中检测数据集中(或如果为空)中的多少个观测值?

如何在SAS中检测数据集中(或如果为空)中的多少个观测值?
EN

Stack Overflow用户
提问于 2011-04-14 13:37:37
回答 6查看 48.5K关注 0票数 18

我想知道是否有一种方法可以检测数据集是否为空,即它没有观察值。或者换句话说,如何获得特定数据集中的观察值数量。

这样我就可以写一个If语句来设置一些条件。

谢谢。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-04-14 18:07:14

使用PROC SQL很容易。执行计数并将结果放入宏变量中。

代码语言:javascript
运行
复制
proc sql noprint;
 select count(*) into :observations from library.dataset;
quit;
票数 18
EN

Stack Overflow用户

发布于 2011-04-14 21:59:03

有很多不同的方法,我倾向于在open()attrn()中使用宏函数。下面是一个简单的例子,大多数情况下效果都很好。如果您要处理数据视图或更复杂的情况,如具有标记为删除或活动where子句的记录的数据集,则可能需要更健壮的逻辑。

代码语言:javascript
运行
复制
%macro nobs(ds);
    %let DSID=%sysfunc(OPEN(&ds.,IN));
    %let NOBS=%sysfunc(ATTRN(&DSID,NOBS));
    %let RC=%sysfunc(CLOSE(&DSID));
    &NOBS
%mend;

/* Here is an example */
%put %nobs(sashelp.class);
票数 14
EN

Stack Overflow用户

发布于 2013-06-29 15:00:10

当我们有很大的数据集时,Proc sql的效率很低。虽然使用ATTRN是一种很好的方法,但这可以在基本sas内完成,下面是一个有效的解决方案,只需读取一行即可提供数十亿行的of:

代码语言:javascript
运行
复制
data DS1;
set DS nobs=i;
if _N_ =2 then stop;
No_of_obs=i;
run;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5658994

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档