SAS|条件控制&do循环

条件控制

if-then语句,基本格式:

if expression then statement;
	<else statement;>

若有多个表达式(expression) 时,用and/or来连接,如if status='OK' and type=3 then count+1;;如有多个执行语句(statement)时,使用do/end语句来连接,如row+1; if row>7 then do; pg+1; row=1; end;;if语句也可与delete联用,将符合条件的观测删除,如if age>12 then delete;

/*if-then语句*/
data stu1;
	set bmi;
	length bd $50.;
	if bmi<18.5 then bd="偏瘦";
		else if bmi<24 then bd="正常";
		else if bmi<27 then bd="偏胖";
		else if bmi<30 then bd="肥胖";
		else if bmi>=30 then bd="重度肥胖";
run;

/*and的用法*/
data a;	
	set bmi;
	length para $50.;
	if bmi>18.5 and id<10 then para="A";
run;

/*or的用法*/
data b;
	set bmi;
	length para $50.;
	if bmi>18.5 or id<10 then para="A";
run;


/*用do/end来连接执行语句*/
data d;
	set bmi;
	length a $50. b $50.;
	if bmi>20 then do;
		a="A";
		b="B";
	end;
run;

/*delete用法*/
data e;
	set bmi;
	if bmi<24 then delete;
run;

补充
如果if-then语句不完整,比如“if age>18”。在这种情况下,动作是隐含的。如果表达式的值为真,则继续执行data步;如果表达式的值非真,则停止执行该观测的后续语句,该观测不会添加到正在创建的数据集,然后sas会接着处理下一个观测。

do循环语句

do-end循环语句,基本格式:

do index-variable=start to stop <by increment>;
	……more SAS statement……;
end;
/*
do 变量=初始值 to 最终值 <by 增加量>;
	SAS语句;
end;
*/

根据增加量的值继续执行,直到满足以下条件之一:
index-variable的值超过stop的值
do语句中指定的while或until字句被满足

do while(expression)|until(expression);
	……more SAS statement……;
end;

当条件(expression)为真时,do语句重复执行。

data f;
	k=2;
	do j=1 to 10 by 2;
		m=k+j;
	output;/*将每一次的循环结果均输出,若不写则只输出最终结果*/
	end;
run;

data g;
	k=1;
	do while(k<=10);
		k=k+2;
		output;
	end;
run;

补充
比较运算符
符号助记符含义
=EQ等于
¬=或^=或~=NE不等于
>GT大于
<LT小于
>=GE大于等于
<=LE小于等于
IN运算符

IN 运算符也可以进行比较

if example in ('a','b') then model='star';

该语句指只要变量example的值是a或b,设置变量model等于star

AND OR
符号助记符含义
&and所有表达式必须为真
!或竖线分隔符or至少有一个表达式为真
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值