IF - THEN语句
Formula
IF condition THEN action
用于只有一个action
IF condition THEN DO; action; action; END;
用于多个actions,注意用了DO一定要END结尾
IF condition AND condition AND condition THEN action;
用于多个conditions 并且都为真
IF condition OR condition OR condition THEN action;
用于多个conditions 其中一个为真
IF variable_name IN (condition1,condition2,… , conditionN) THEN action;
该varible值等于在其中一个condition
Note: 符号
AND : &
OR: | , !
IF - THEN / ELSE 用于分组观测
Formula
IF condition THEN action;
ELSE IF condition THEN action;
ELSE IF condition THEN action;
ELSE action;
Retain 常用于求和语句
- Retain 可以把一次迭代保留到下一个迭代,不然每次就重新定义为缺失值
- Formula
RETAIN variable-list;
RETAIN variable-list initial-value;
下面是例子:rsum值是带retain的, 每次rsum都能保留上次的值进行sum sum值是不带retain, 每次sum 都是缺失值,所以用sum function最后得到的都是num自己的值
data test; input num; datalines; 1 2 3 2 1 7 5 ; run; data new; set test; retain rsum; rsum=sum(rsum,num); sum=sum(sum, num); run;
output:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNyZuBnLyQTMzUDMxYDM3EjMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
Array
- 功能:简化程序
- 定义:Array 格式要不全是numeric,要不全是characteristic
- Formula:
ARRAY name (n) $ variable-list;
name: array name
(n) / {n} / [n] :定义array中变量个数
$ : 如果array是characteristic类型,用于define initial characteristic value
例子:Defining Initial Array Values
array test1{3} $ a1 a2 a3 (‘a’,‘b’,‘c’);
array test2{3} a1 a2 a3 (1,2,3);
test1(1) 指代变量 a1
例子:
data test; input name $ age wj kt tr flip ttr; datalines; aby 54 3 9 4 4 9 ric 33 2 9 3 3 3 oak 27 3 9 4 2 3 rich 41 3 5 4 5 5 berle 18 4 4 9 3 2 ; run; data songs; set test; array song(5) wj kt tr flip ttr; do i = 1 to 5; if song(i)=9 then song(i)=.; end; run;
如果不使用array,code更加麻烦
data songs2;
set test;
if wj=9 then wj=.;
if kt=9 then kt=.;
if tr=9 then tr=.;
if flip=9 then flip=.;
if ttr=9 then ttr=.;
run;
变量名列表的快捷方式
-
变量列表
INPUT cat1 cat2 cat3 cat4 cat5 cat6;
缩写列表
INPUT cat1 - cat6;
-
变量列表
INPUT a b c d e
缩写列表
INPUT a – e;
-
函数缩写列表 OF
SUM(OF cat1 - cat6);
SUM(OF cat:);
data songs3; set test; array song(5) song1 - song5; ARRAY old(5) wj -- ttr; do i = 1 to 5; if old(i)=9 then song(i)=.; else song(i)=old(i); end; AVg=mean(of song:); run;