SAS入门基础(select结构和循环结构)

1.SELECT结构

格式一:
	SELECT (选择表达式);
	WHEN(值列表) 语句;
	WHEN(值列表) 语句;
	……
	OTHERWISE 语句;
	END;
功能及流程:
	执行SELECT结构时,先计算出选择表达式和值列表中的所有值,然后把选择表达式值由前
	向后与值列表中的值相比,发现相等值则执行对应的语句,然后退出SELECT结构(不再查
	看后面的值列表)。如果选择表达式的值不等于任何值列表中的值则执行OTHERWISE对应
	的语句,这种情况下没有OTHERWISE语句会出错。
例:
	DATA ;
	INPUT month $ @@;
	put month @;
	SELECT(month);
	WHEN('Feb', 'Mar', 'Apr') put '春天';
	WHEN('May', 'Jun', 'Jul') put '夏天';
	OTHERWISE put '秋天或冬天';
	END;
	CARDS;
	Mar Jun oct
	;
	run;

格式二:

SELECT;
WHEN(条件) 语句;
WHEN(条件) 语句;
……
OTHERWISE 语句;
END;
这种SELECT语句没有选择表达式,而是在每一个WHEN语句指定一个条件(逻辑表达式),
执行第一个满足条件的WHEN后的语句。如果所有条件都不满足则执行OTHERWISE后的语句。
例:
	data;
	input age @@;
	put age @;
	SELECT;
	WHEN(age<=12) put '少年';
	WHEN(age<35) put '青年';
	OTHERWISE put '中老年';
	END;
	cards;
	10 30 50
	;
	run;

2.循环结构

⒈计数DO循环
⒉当型循环
⒊直到型循环
⒈计数DO循环
	计数DO循环的格式:
	DO 计数变量 = 起始值 TO 结束值 BY 步长;
	循环体语句……
	END;
	这种结构与BASIC中计数循环很类似,功能也相当,只是在SAS中是以关键字DO开头(不是FOR),
	另外步长用BY引导(不是STEP),而结构以END结束(而不是NEXT)。
	其功能与流程:
	程序先把计数变量赋值为起始值,如果此值小于等于结束值则执行循环体语句,然后把计数变量
	加上步长,再判断它是否小于等于结束值,如果是则继续执行循环体,直到计数变量的值大于结
	束值为止。上述结构中“BY 步长”可以省略,这时步长为1。如果步长取负值,则继续循环的条
	件是计数变量大于等于结束值。
	计数DO循环举例:
		data;
		sum=0;
		DO i = 1 TO 10 ;
		sum +i;
		/*此处sum+i等价于sum=sum+i*/
		END;
		PUT sum=;
		run;
	在循环体中可以用LEAVE语句跳出循环(功能与C语言的break语句相当),如:
		data;
		n=13;
		flag=1;
		DO i = 2 TO n/2 ;
		if mod(n,i)=0 then do;
		flag=0;
		leave;
		end;
		END;
		if flag=1 then
		put n "是素数";
		else
		put n "不是素数";
		run;
	⒉当型循环
		当型循环的格式:
		DO WHILE(循环继续条件);
		循环体语句……
		END;
		程序先判断循环继续条件是否成立,成立时执行循环体语句,再判断循环继续条件,
		如此重复,直到循环继续条件不再成立。
		data;
		x=243;
		y=63;
		z=mod(x,y);
		DO WHILE (z ^= 0);
		x=y;
		y=z;
		z= mod(x,y);
		END;
		put y;
		run;
⒊直到型循环
	直到型循环的格式:
	DO UNTIL (循环退出条件);
	循环体语句……
	END;
	程序先判断循环退出条件是否成立,成立则结束循环,否则继续。
	例:
		data;
		n=0;
		do until (n>=5);
		n+1;
		put n=;
		end;
		run;

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