楼主: zfmpassall
1478 4

请教一个SAS编程的问是,请高手解答,多谢 [推广有奖]

  • 0关注
  • 0粉丝

大专生

46%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
550 点
帖子
73
精华
0
在线时间
28 小时
注册时间
2013-3-5
最后登录
2014-10-16

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
小弟最近在学习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;

二维码

扫码加我 拉你入群

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

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

关键词:SAS编程 otherwise Select 百思不得其解 Error otherwise 程序

沙发
zfmpassall 发表于 2013-9-2 10:54:53 |只看作者 |坛友微信交流群
这是我在调试一个例子时发现的,想不明白,请高手帮忙解答下,多谢了

使用道具

藤椅
gazifjfz 发表于 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;

使用道具

板凳
zfmpassall 发表于 2013-9-2 12:01:13 |只看作者 |坛友微信交流群
应该是这样的,果然可以了,多谢!

使用道具

报纸
moyunzheng 发表于 2013-9-24 11:08:20 |只看作者 |坛友微信交流群
1楼代码错误的确切原因是"未按正确顺序使用",cards和datalines必须在data步的最后,也就是Run之前不能够有其他的语句.把Select放到cards之前即可

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-2 02:30