全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4145 10
2012-04-11
新手,在学习SET以及多个SET时,对于PDV重置为MISS的条件有点迷惑。请问PDV重置为MISS的精确条件是什么,是DATA STEP最后的RUN STATEMENT,还是SET STATEMENT本身(即执行一条SET STATEMENT前,PDV中与该SET STATEMENT后接的data set包含的相同变量全部重置为MISS)?
也许我表述的不够清晰。。。。求高手解惑。。。
二维码

扫码加我 拉你入群

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

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

全部回复
2012-4-11 15:54:24
当一条观测遇上RUN 输出,然后返回到SET读取下一条观测时,pdv就会reset。前提条件是没使用retain
(使用merge的时候pdv不会reset)
二维码

扫码加我 拉你入群

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

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

2012-4-11 16:15:58
6203479170 发表于 2012-4-11 15:54
当一条观测遇上RUN 输出,然后返回到SET读取下一条观测时,pdv就会reset。前提条件是没使用retain
(使用m ...
假设data set a 有一个var、5个OBS,即x=1、2、3、4、5
那么执行
data _null_;
   put x=;
  set a;
run;
查看LOG可以看到,只有第一个x=. 其余的x=1、2、3、4、5(输出了6条信息)
显然run statement并没有让PDV RESET。所以我觉得不是RUN让PDV RESET,而SET STATEMENT 让PDV RESET,并且只RESET PDV 中,与SET 后接的DATA SET 里的变量名称相同的变量(多个SET情况下)
初步的想法,正在想办法验证。。。。。
二维码

扫码加我 拉你入群

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

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

2012-4-11 16:29:40
didizhang 发表于 2012-4-11 16:15
假设data set a 有一个var、5个OBS,即x=1、2、3、4、5
那么执行
data _null_;
并不是set和run 使得PDV reset,而是当某一条数据到达RUN语句后输出,SAS会重新返回到程序的开头,这时PDV 将RESET,你可以理解成是data使得PDV reset
二维码

扫码加我 拉你入群

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

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

2012-4-11 16:43:55
6203479170 发表于 2012-4-11 16:29
并不是set和run 使得PDV reset,而是当某一条数据到达RUN语句后输出,SAS会重新返回到程序的开头,这时PD ...
如果是这样的话,那我刚刚的那个简单的代码里,put x= 在日志中应该输出都是MISS,因为PUT是在DATA 执行之后,SET读取下一条OBS之前。这是为什么呢
二维码

扫码加我 拉你入群

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

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

2012-4-11 17:21:26
当sas回到program读下一条观测时,pdv将会reset,pdv里面由input或说明语句创建的变量会变成missing.但从set里读进的变量不会变成missing。因为到第二次的set的时候它将被下一条的值覆盖。

不知道这样解释你明白吗
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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