全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学
1743 4
2013-09-02
小弟最近在学习SAS编程,有一个程序调试的总是出错,请各位帮忙看下,不胜感谢!

data temp;
input month$ day$ @@;
cards;
Feb 星期一
;

select(month);
        when ('Feb','Mar', 'Apr') put '春天';
        when ('May','Jun','Jul') put '夏天';       
        otherwise  put '秋天或冬天';
end;
run;

上述程序提交后,提示如下:

4291  select(month);
      ------
      180

ERROR 180-322: 语句无效或未按正确顺序使用。

4292      when ('Feb','Mar', 'Apr') put '春天';
          ----
          180

ERROR 180-322: 语句无效或未按正确顺序使用。

4293      when ('May','Jun','Jul') put '夏天';
          ----
          180

ERROR 180-322: 语句无效或未按正确顺序使用。

4294      otherwise  put '秋天或冬天';
          ---------
          180

ERROR 180-322: 语句无效或未按正确顺序使用。

4295  end;
      ---
      180

ERROR 180-322: 语句无效或未按正确顺序使用。


如果程序改成如下就是OK的,百思不得其解:

data _null_;
mon = 'May';

select(month);
        when ('Feb','Mar', 'Apr') put '春天';
        when ('May','Jun','Jul') put '夏天';       
        otherwise  put '秋天或冬天';
end;
run;

二维码

扫码加我 拉你入群

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

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

全部回复
2013-9-2 10:54:53
这是我在调试一个例子时发现的,想不明白,请高手帮忙解答下,多谢了
二维码

扫码加我 拉你入群

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

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

2013-9-2 11:10:21
我在想啊。
第一种写法呢,你用input和cards先建了个数据集temp,然后想再做select的时候,需要重新建一个数据集,再set到temp,否则select是不会起效果的。而第二种写法呢,实际上并没有建立新数据集(你去work里面找一下,是没有_null_这个数据集出现的),然后直接使用select是可以的。
在第一种写法下,你试试看这样,应该是可以的。
data temp1;
  set temp;
  select(month);
     when ('Feb','Mar', 'Apr') put '春天';
     when ('May','Jun','Jul') put '夏天';        
       otherwise  put '秋天或冬天';
    end;
run;
二维码

扫码加我 拉你入群

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

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

2013-9-2 12:01:13
应该是这样的,果然可以了,多谢!
二维码

扫码加我 拉你入群

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

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

2013-9-24 11:08:20
1楼代码错误的确切原因是"未按正确顺序使用",cards和datalines必须在data步的最后,也就是Run之前不能够有其他的语句.把Select放到cards之前即可
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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