全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
8597 4
2013-12-03
一下是我编的一个程序:
data vitals;
input ID : #3.
Age
Pulse
SBP
DBP;
label SBP = "Systolic Blood Pressure"
DBP = "Diastolic Blood Pressure";
datalines;
001 23 68 120 80
002 55 72 188 96
003 78 82 200 100
004 18 58 110 70
005 43 52 120 82
006 37 74 150 98
007 . 82 140 100
;
if missing(age) then delete;
if age lt 50 then do;
  if pulse lt 70 then pulsegroup='Low';
   else  pulsegroup='High';
  if sbp lt 130 then sbpgroup='Low';
  else sbpgroup='High';
end;
else if age ge 50 then do;
  if pulse lt 74 then pulsegroup='Low';
   else  pulsegroup='High';
  if sbp lt 140 then sbpgroup='Low';
  else  ssbpgroup='High';
end;
run;
proc print data=vitals;
run;
运行结果显示一堆这样的错误:319  end;
     ---
     180

ERROR 180-322: 语句无效或未按正确顺序使用。
是不是if和end的使用不当,正确的用法是什么呢?望路过的大神指点迷津,谢谢啦!


二维码

扫码加我 拉你入群

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

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

全部回复
2013-12-3 20:13:16
建议看看if 语句的介绍。syntax :if 条件1 then 语句1;else if 条件2 then 语句2;最后的else 语句3;
end和do应该 是一一对应的。
二维码

扫码加我 拉你入群

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

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

2013-12-3 20:18:01
henryyhl 发表于 2013-12-3 20:13
建议看看if 语句的介绍。syntax :if 条件1 then 语句1;else if 条件2 then 语句2;最后的else 语句3;
e ...
我那上面写的do 和end是匹配的吧!
二维码

扫码加我 拉你入群

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

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

2013-12-3 20:56:31
cfa2012 发表于 2013-12-3 20:18
我那上面写的do 和end是匹配的吧!
不好意思刚才看错了。datalines语句必须是data步中的最后一个语句,并把#改成$就应该行了。
  if sbp lt 140 then sbpgroup='Low';
  else  ssbpgroup='High';
end;
这里的  else  ssbpgroup='High';是不是要改成  else  sbpgroup='High';

data vitals;
input ID : $3.
Age
Pulse
SBP
DBP;
label SBP = "Systolic Blood Pressure"
DBP = "Diastolic Blood Pressure";
if missing(age) then delete;
if age lt 50 then do;
  if pulse lt 70 then pulsegroup='Low';
   else  pulsegroup='High';
  if sbp lt 130 then sbpgroup='Low';
  else sbpgroup='High';
end;
else if age ge 50 then do;
  if pulse lt 74 then pulsegroup='Low';
   else  pulsegroup='High';
  if sbp lt 140 then sbpgroup='Low';
  else  sbpgroup='High';
end;
datalines;
001 23 68 120 80
002 55 72 188 96
003 78 82 200 100
004 18 58 110 70
005 43 52 120 82
006 37 74 150 98
007 . 82 140 100
;
run;
二维码

扫码加我 拉你入群

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

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

2013-12-3 22:10:07
henryyhl 发表于 2013-12-3 20:56
不好意思刚才看错了。datalines语句必须是data步中的最后一个语句,并把#改成$就应该行了。
  if sbp lt ...
嗯,解决了,太感谢啦!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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