全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1236 4
2014-06-11
DATA A;   INPUT HR SBP DBP;
DATALINES;
   80 160 100
   70 150 90
   60 140 80
  ;
PROC MEANS DATA=A NOPRINT;
   VAR HR SBP DBP;
   OUTPUT OUT=B
         MEAN=M_HR M_SBP M_DBP;

RUN;

DATA C11;
    SET A;
    IF _N_=1 THEN SET B;
      HRPRE=HR/M_HR*100;
      SBPPRE=SBP/M_SBP*100;
      DBPPRE=DBP/M_DBP*100;
        DROP M_HR M_SBP M_DBP _TYPE_ _FREQ_;
DATALINES;
RUN;




请问这个程序中的if 语句是循环么?结果应该是怎么样的啊?


二维码

扫码加我 拉你入群

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

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

全部回复
2014-6-11 17:14:50
   if语句不应该是循环吧?为什么结果运行出来觉得它循环了呢?
二维码

扫码加我 拉你入群

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

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

2014-6-11 18:45:40
这个需要理解data步数据的读取原理,当_n_=1时,数据读取B数据集,四个变量的第一行观测值被读取进C数据集,由于后面不再读取,因此在PDV中四个变量的值不更新,一直保持被自动读取同样的值,直到数据读取结束。
二维码

扫码加我 拉你入群

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

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

2014-6-19 17:11:42
mingfeng07 发表于 2014-6-11 18:45
这个需要理解data步数据的读取原理,当_n_=1时,数据读取B数据集,四个变量的第一行观测值被读取进C数据集, ...
谢谢您
二维码

扫码加我 拉你入群

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

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

2014-6-19 21:16:59
复制代码
其实用if来控制set有点复杂,

例如上述程序,你可以看得到,C中有五条不同的观测,而最后一个data步中:第一个set是最外层完整的set,整个data步的条数仅由这个A数据集的条数决定,而第二个set的C数据集被if所控制,他只有_N_ = 2,一次机会读一条观测到PDV中,这也就相当于做了一个全部变量包括值的retain。

后面的DATALINES;用法无从考究。

二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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