海蓝无魂 发表于 2019-8-14 16:06:45

SAS数据步常用语句


一、 DATA语句
DATA语句的作用是表明数据步的开始并给出数据集的名称。
DATA语句的格式为:
                                  DATA 数据集的名称;
数据集的名称必须以英文字母开始,最长不超过8个字符。

二、CARDS语句
CARDS语句的作用是与“;”呼应,标志数据行的开始与结束。
CARDS语句的格式为:
CARDS;
数据行
;
如果使用CARS语句,在CARDS的后面必须紧跟数据行,并且在一个数据步中最多只能使用一个CARDS语句。\

三、INPUT语句
INPUT语句的作用是描述输入记录中的数据,并把输入值赋给相应的变量。
INPUT语句的格式为:
INPUT 数据的变量名、顺序及类型;

用INPUT语句是为了读取外部文件的数据或跟在CARDS语句后面的数据。
SAS默认用INPUT语句读取的是数值类型变量的值。若在变量后加’$’,则该变量为字符串类型变量。
为从一行读入多个观测值,应使用行保持符’@@’限制度数指针,使其保持在这一行上读数,知道数据读完为止。
例如:
             Inputx y@@;
             Cards;
                    23 4 5 6 7 8
                     ;   
列方式:
               input name$ 1-8 age 11-12    /* 变量name所属的列为1-8列;变量age所属的列为11-12列*/
格式化方式:
              input a $ 9 b 3   /*变量a的长度为9个字符,变量b的长度为3个字符*/

四、INFILE语句
Infile语句的作用是指明外部数据文件的名称,并从这个外部数据文件中读取数据。
INFILE语句的格式为:
INFILE ‘外部数据文件名’;
例如,在D盘上有一个名称为xiao.txt的数据文件,
其中数据排列为:
A 3.16 B 2.9 B 5.8B 3 A 4.9 A 4.17
用 INFILE语句读取数据的代码为:
Data ex;

Infile ‘D:xiao.txt’;

Input z$ x@@;

Proc print;

Run;

五、SET语句

       SET语句的作用是按照指定的条件从指定的数据集中读取数据机那里新的数据集获奖两个数据集中的观测值纵向连接建立新的数据集。

       SET语句的格式为:

                    SET 数据集名表;

例如,从数据集EX中读取数据建立新的数据集EX1,可编辑语句:

DATA EX1;

SET EX;

将两个数据集D1和D2中的观测值纵向连接建立新的数据集D3,可编辑语句:

DATA D3;

SET D1 D2;


六、MERGE语句
MERGE语句的作用是将两个数据集中的各个观测值横向合并建立新的数据集。
MERGE语句的格式为:
MERGE 数据集名表;
例如,将数据集D1与D2中的观测值横向合并建立新的数据集D3,可编辑语句:
DATA D3;

MERGE D1 D2;

RUN;



七、DROP语句
DROP语句的作用是指定不写到数据集中的变量。
DROP语句的格式为:
DROP 变量名表;
如果在DATA步中有DROP语句,那么DROP语句中一出现的变量的观测值被删除,未出现的变量的观测值仍保留在新的数据集中。


八、KEEP语句
KEEP语句的作用是指定要写到数据集中的变量。
KEEP语句的格式为:
KEEP 变量名表;
如果在DATA步4中有KEEP语句,那么KEEP语句中未出现的变量的观测值被删除,已出现的变量的观测值被保留在你的数据集中


九、IF语句
IF语句的作用是使SAS继续处理符合IF条件规定的观测值,因而所得到的数据集是原数据集的子集。
IF语句的格式为:
IF 条件表达式;
如果表达式的值为真,SAS处理当前的观测值,执行DADA步中的语句,如果表达式的值是假,SAS马上返回到DATA步的开始,不处理当前的观测值,不执行DADA步中的语句。


十、PROC语句
PROC语句的作用是指定需要调用的过程以及该过程的若干选择项。
PROC语句的格式为:
PROC SAS的过程名;
例如,调用print过程,打印数据集ex的内容:

PROC print data=ex;

这里的data=数据集名,用来指定本过程所要处理的数据集名,如缺省则处理最新建立的数据集。在PROC步中,还必须确认一些最基本的信息,包括:
(1)   处理的数据集名,格式为data=数据集名;
(2)   所涉及的变量名,格式为 var 变量名;
(3)   分组处理的标志,格式为 by 组变量名;


十一、CLASS语句
class语句的作用是在分析的过程中定义分类变量,再按分类变量的值分组进行数据分析。
Class语句的格式为:
CLASS 变量名;
CLASS语句对数据分析所起的作用类似于by语句,但是它们打印输出的格式不相同,并且by语句要求先对变量排序后才能使用。


十二、FREQ语句
freq语句的作用是规定一个变量,以它的值作为数据集中观测值出现的频数。
FREQ语句的格式为:
FREQ 变量;
假定某观测值的FREQ变量的值为n,在分析时,改数据集中这个观测值出现的频数便是n。
    若n<1,则观测值不参加分析
    若n不是整数,则自动取整。观测值的总数等于FREQ变量的和。


十三、WHERE语句
WHERE语句是一个条件语句,使用户从已存在的SAS数据集中把满足条件的数据输出到新的SAS数据集中。
一般格式:
WHERE logical-expression(s);

举例:

wheresum(chinese,maths,english)>=240;

where total in(257263);

注意:

1)它不能用在由CARDS语句构成的DATA步;

2)不能从包含原始数据的外部文件中选择记录;

3)在DATA步,where语句必须跟在一个SET、MERGE、UPDATE或MODIFY语句的后面。

WHERE表达式中常用的特有运算符
1、Between-And运算符
选择变量值落在某个范围内的观测(包括端点)。
2、Same-And运算符
除满足已选的的条件外,还满足And后的条件


十四、DO语句
五种形式:
1)简单DO语句;2)循环DO语句;3)DO WHILE语句;4)DO UNTIL语句;
5)DO OVER语句

1、简单DO语句

一般形式:

DO; 其他SAS语句; END;

注:常用在IF-THEN-ELSE语句中,用来执行党IF条件成立时的一组语句。

data class;

inputsex$ chinese maths english @@;

if sex='m' then

do;

total=chinese+maths+english;

n+1;

end;

ave=sum(chinese,maths,english)/3;

cards;

m 82 78 69 f 90 78 89 m 79 88 97 m 7656 80

f 72 76 81 f 69 91 75 m 74 86 67

;

proc print;

run;

 

2、循环DO语句

DO-END之间语句被重复执行的语句

举例:

data class;

input sex$ chinese maths english @@;

do i=1 to 10 by 2 while(n<2);

total=chinese+maths+english;

n+1;

end;

ave=sum(chinese,maths+english)/3;

cards;

m82 78 69 f 90 78 89 m 79 88 97 m 76 56 80

f72 76 81 f 69 91 75 m 74 86 67

;

proc print;

run;

 

3、DO OVER 语句

一般格式为:

DO OVER array-name;

其他SAS语句;

end;

举例:

data test;

input x1-x5;

array x x1-x5;

do overx;

x=x*100;

end;

cards;

0.95 0.880.57 0.90 0.65

;

proc print;

run;

 

十五、数组语句

1、显示下标的ARRAY语句

    显示下标的ARRAY语句用以定义数组变量,它规定了数组变量的名字、数组元素的个数、属性、起始值。

例:array x{4} x1-x4;

    array economic{4} cost price profit income;

{}中的内容即为下标

下标可以是*号、一个数字、表示数组元素的个数和范围;

格式1:{dimension-size-1<,…dimension-size-n>}

指出数组中每一维元素的个数,若为多维,中间必须用“,”隔开。

例如二维数组可定义为:

array score{40,7}x1-x280;

用矩阵可表示为:

                X11 X12 … X17

                X21 X22 … X27

                …  …  … …

                X401 X402 … X407

格式2:此格式规定数组中每一维的上下界。如没有规定下界,表示下界为1。

例如:

array economic{4} 等价于 array economic{1:4} 表示数组的下界为1

array score{40,7} 等价于 array score{1:40,1:7} 表示数组的每一维的下界都为1

       

2、隐含下标的ARRAY语句

ARRAYarray-name<{variable}> {$}….

如果用户没有规定下标变量,SAS系统将使用自动变量_i_来作为下标变量。

举例:

data test;

input x1-x5 y;

array t x1-x5;

do _i_ =1 to 5 while(t(_i_)<y);

output;

put t{_i_}= y=;

end;

cards;

1 3 5 7 4 6

0 2 7 6 8 5

;

proc print;

run;

 

十六、OUTPUT语句

OUTPUT语句用该过程产生的输出数据集的信息。

一般格式:

output <out=sas-data-et><keyword=names>;

 

keyword=names

规定在新数据集中同关键词联系的输出变量的名字。

例如:

proc means;

var x;

output out=outmeanmean=meanx;

run;
页: [1]
查看完整版本: SAS数据步常用语句