全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2821 6
2012-07-30
    %if %sysfunc(attrn(&dsid,WHSTMT)) or      %sysfunc(attrc(&dsid,MTYPE)) EQ VIEW %then %let nobs=%sysfunc(attrn(&dsid,NLOBSF));    %else %let nobs=%sysfunc(attrn(&dsid,NOBS));请教一下大神,%sysfunc(attrn(&dsid,WHSTMT)) or      %sysfunc(attrc(&dsid,MTYPE)) EQ VIEW 这一段什么意思????

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-7-30 14:33:21
大家来讨论一下
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-7-30 15:01:26
这个你要去查attrn()函数的参数说明,whstmt属性返回值是说 目标dataset是否存在where语句,后面那个没见过,看这个样子应该是判断该数据集是否是View(一种逻辑表格,数据本身不是存储在view里面,而是从其它数据集里面选取一些数据展示在view里面的一种形式。) ——不一定对,我以前学函数的时候没看到过MTYPE这个选项,手头没参考书查询。你可以查下帮助文档。

这个%if语句的意思是说,数据集如果有where语句进行限制,或者是一个逻辑数表,则返回逻辑观察数(NLOBSF指定:把标记为删除的去掉,计算where语句的限制,把firstobs 和obs系统设置都计算在内)。如果不是,那么返回物理观察数(Nobs指定:计算标记为删除的观察忽略where语句的限制)。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-7-30 15:33:19
非常感谢,但是有个疑问,为什么要判断数据是否存在where呢?
一般数据集出来以后都是在work下面,直接对这个数据算他的观测数,这个where限制也是对之前的数据集进行限制。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-7-30 15:39:31
wodemac 发表于 2012-7-30 15:33
非常感谢,但是有个疑问,为什么要判断数据是否存在where呢?
一般数据集出来以后都是在work下面,直接对这 ...
这个问题很奇怪,出来在work下面只是临时的,在实际工作中,大多数时候还是要计算永久数据集的观察数,在写宏的时候要考虑到各种可能的情况,这样写出来的宏才是有价值的。此外where语句是指该数据集中是否有些observation是逻辑上不属于该数据集的(物理上存储和逻辑上的存储还是有区别的)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-7-30 15:45:54
非常感谢,那个attrc的参数
'MTYPE'   returns the type of the SAS data library member.
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群