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;

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;


版权声明:本文为qq_43776450原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。