天天看点

SAS 小白学习笔记(2)

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 常用于求和语句

  1. Retain 可以把一次迭代保留到下一个迭代,不然每次就重新定义为缺失值
  2. 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:

SAS 小白学习笔记(2)

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;
    
               
SAS 小白学习笔记(2)

如果不使用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;
               
SAS 小白学习笔记(2)
SAS