全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1322 2
2013-07-18
data a;
set b;
yy=(y=3); logit=3;output;
yy=(y=2); logit=2;output;
yy=(y=1); logit=1;output;
run;

其中yy=(y=3); logit=3;output;是想做什么?
没有if,也没有循环,这段代码把每一个观测值都变成三个了,求解释

二维码

扫码加我 拉你入群

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

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

全部回复
2013-7-18 21:17:18
set 是一条观测、一条观测的方式进行的。
读取b数据集的第一条观测时,由于set b后面还有语句,
yy=(y=3); logit=3;output;
yy=(y=2); logit=2;output;
yy=(y=1); logit=1;output;
所以,未遇到run,回不到data步开头,不会将pdv中的变量制空,一直存在。没执行一个output,b中的值也会输出到数据集。
二维码

扫码加我 拉你入群

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

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

2013-7-18 22:23:24
yy =(y=3) 相当于一个条件语句.
当 y=3 为真时 yy=1;
当 y=3 为假时 yy=0;

logit=3; output; 的意思是 把 yy=1 or yy=0 和 logit=3 输出到结果数据集 a

第一个output后,程序在同一条观测上继续运行下面的语句。

下面的 code 说明 为什么每一条观测有三条输出.

data b;
input x y;
datalines;
1 1
2 2
3 3
;
data a;
  set b;
  yy=(y=3); logit = 3; output;
  yy=(y=2); logit = 2; output;
  yy=(y=1); logit = 1; output;
run;


下面的 code 与上面的 code 得到相同的结果
data c;
  set b;
if y = 3 then yy=1;
   else yy=0;
   logit = 3;
   output;      
if y = 2 then yy=1;
   else yy=0;
   logit = 2;
   output;
if y = 1 then  yy=1;
   else  yy = 0;
   logit = 1;
   output;
run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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