楼主: mehrwoods
2328 2

[问答] 求解答,关于SAS的data步执行的问题 [推广有奖]

  • 0关注
  • 0粉丝

svip3

已卖:179份资源

本科生

31%

(VIP/贵宾)六级

15%

威望
0
论坛币
71308 个
通用积分
0.0001
学术水平
7 点
热心指数
9 点
信用等级
6 点
经验
1151 点
帖子
73
精华
0
在线时间
67 小时
注册时间
2008-2-11
最后登录
2025-5-26

楼主
mehrwoods 发表于 2015-11-7 23:27:21 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
data tt;
  input a;
  cards;
  1
  2
  1
  2
  1
  2
  ;
run;
data aa bb;
  set tt;
  if a=1 then do;
              output aa;       (return;)
              end;
    else if a=2 then goto rr;
  rr: do;
      put "output bb";
      output bb;
      end;
run;
上面的程序中,是要将tt中的a=1和a=2分开输出。
我的问题是,如果不加上括号中的return,那么bb数据集就会既有a=1也有a=2,加上return 强制回到data步开头,才能正确区分a=1和a=2。
  记得SAS不是在output语句后,就自动结束当前的data步操作,进入下一data循环。那为什么这里在a=1时,Output aa之后,不自动结束进入下一data步循环,还要去执行标签tt中的output bb?

二维码

扫码加我 拉你入群

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

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

关键词:data步 sas的 Data 求解答 output return 程序

沙发
冰棱 发表于 2015-11-7 23:45:52
data tt;
  input a;
  cards;
  1
  2
  1
  2
  1
  2
  ;
run;
data aa bb;
  set tt;
  if a=1 then output aa;
    else if a=2 then  output bb;

run;

把你的程序改成这样就好了。a 要么是1要么是2
RR的情况,如果有你这样独立的程序段,如果没有return,那么他一定会被执行,所以BB肯定都是有的
但如果你加了return那么,a=2时,不会执行RR就没事~~

output好像不是结束吧.是有output存在的程序里,只output它指定的内容,又没说别的不执行了……

data aa bb cc;
  set tt;
  if a=1 then output aa;
    else if a=2 then  output bb;
output cc;
run;
你试试这个,cc里也是很全的……
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
mehrwoods + 3 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 3  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

藤椅
mehrwoods 发表于 2015-11-8 15:45:56
原来如此,我对output的理解错了,非常感谢。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-6 06:30