全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
10984 20
2012-12-03
_N_变量是指针变量。
我想问下。两个SET语句产生一条PDV,两个数据指针,那对应的_N_变量有几个呢?
另外在PDV返回DATA开头时,清除机制是什么?是两个SET对应的变量都清除还是可以有选择地清除?谢谢不吝赐教!
二维码

扫码加我 拉你入群

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

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

全部回复
2012-12-3 21:17:09
1. 不管有没有set语句,不管有几个set语句,每一个DATA step执行过程中_N_变量只有一个;
2. DATA 步执行过程中,返回DATA开头时,SET 数据集中的变量和retain的变量都不会清空,其他的变量清空
二维码

扫码加我 拉你入群

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

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

2012-12-3 22:11:14
未命名1.jpg 未命名.jpg pobel 发表于 2012-12-3 21:17
1. 不管有没有set语句,不管有几个set语句,每一个DATA step执行过程中_N_变量只有一个;
2. DATA 步执行过 ...
谢谢大神不吝赐教。那我的疑惑就来了。
第一,双SET 产生双指针,为什么只有一个存储指针变量的变量_N_呢。
双SET语句,是一种效率很高的执行语句,既然只有一个指针变量,那如何实现连个数据集一对多、多对多、一对多条件匹配等复杂操作呢?!
第二,SET语句变量不清空,那新变量值直接替换掉原来的值吗?谢谢大神不吝赐教!

另外,我把某人著作中的例子和解释贴上来,请大神帮我分析。困惑在第五步,为什么RATES表中的数据指针会一直停留?


二维码

扫码加我 拉你入群

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

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

2012-12-4 08:32:35
小甲克虫 发表于 2012-12-3 22:11
谢谢大神不吝赐教。那我的疑惑就来了。
第一,双SET 产生双指针,为什么只有一个存储指针变量的变量_N ...
第一,_n_和SET没有关系,和SET几个数据集也没有关系。它是DATA step运行时,每通过一次DATA语句,_N_的值就加一。所以我不认为_N_是一个指针变量。
第二,SET的数据集的变量在DATA步下一个循环开始时不清空,而是执行到SET语句时由新读进来的变量的值去替换原来的值。如:
data test;
   put "==================";
   put "BEFORE SET:" _n_=  age=   x=;
   set sashelp.class;
   x=1;
   put "AFTER SET:" _n_=  age= x=;
   put "==================";
   put;
run;

对于你所提到的第五步,如果程序中是“set ch7.madrid;”,那程序执行过程中返回到DATA步开头时是不会清空表madrid中的变量的值的,只有再次执行 set ch7.madrid;一句时才会用新读进的值替换原来的值。
另外,你所贴出的那五步解释好像并不是针对下面那段程序的。
二维码

扫码加我 拉你入群

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

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

2012-12-4 08:58:01
小甲克虫 发表于 2012-12-3 22:11
谢谢大神不吝赐教。那我的疑惑就来了。
第一,双SET 产生双指针,为什么只有一个存储指针变量的变量_N ...
求问lz看的是哪本书?
SAS里有明确的指针的概念吗?
不是说可以把data步理解为自动的for循环吗?
需要指针吗?谢谢!
二维码

扫码加我 拉你入群

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

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

2012-12-4 13:39:44
pobel 发表于 2012-12-4 08:32
第一,_n_和SET没有关系,和SET几个数据集也没有关系。它是DATA step运行时,每通过一次DATA语句,_N_的值 ...
那请问,双SET产生双指针,怎么控制这连个指针的指向进度?!谢谢不吝赐教!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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