DATALINES语句:
相当于CARS语句;
该语句必须是数据步的最后一条语句;
MISSOVER处理;
DATA TEMP;
INFILE DATALINES MISSOVER;
INPUT X Y Z;
DATALINES;
1 10 100
2 20
3 30 300
;
PROC PRINT;
RUN;
代码说明:
1)用来定义内置数据的;我们要做数据集,那数据来源是什么呢?在数据步中直接定义数据,就是通过datalines或者cards语句;
2)datalines和cards语句是等效的;
3)每行数据后面没有分号;
4)最后一行是一个分号;
5)看到缺项值,加了infile datalines missover,那数据就自动添加缺项值,符号是小数点。
DATALINES4语句:
专用于处理数据里包含分号的情况。
数据最后用4个;;;;结束
DATA B;
INPUT NUM CITATION & $50.;
DATALINES4;
1 SMITH, 1982
2 ALLEN ET AL., 1975; BRADY, 1983
3 BROWN,1980; LEWIS,1974; WILLIAMS,1972
;;;;
PROC PRINT;
RUN;
代码说明:
1)在内置数据中包含分号;,这个不好定义,在SAS中定义了datalines4,那分号;就作为数据,而不是作为结束;
2);;;; 作为数据结束
提供信息的几条语句:
LENGTH语句
LABEL语句
LOSTCARD语句
INFORMAT/FORMAT语句
MISSING语句
注释语句
OPTIONS语句
LENGTH语句:
用来指出变量的长度(缺省值为8)
格式: LENGTH 变量 [$] 长度;
DATA a;
LENGTH name $ 12;
INPUT name sex $ h w;
DATALINES;
ZhangZhihui F 1.71 49
ZhaoChangtai M 1.73 55
;
RUN;
代码说明:
1)LENGTH:用来重新定义变量的长度。
2)name是字符类型,是12位字符这么长。我们看到名字比较长,如果没有length语句,那么名字是读不全的,只能读部分。
LABEL 语句:
给变量起别名:
DATA d;
INPUT name $12. sex $ h w;
LABEl h='身高' w='体重';
DATALINES;
ZhangZhihui F 1.71 49
ZhaoChangtai M .173 55
;
PROC PRINT LABEL;
RUN;
输出结果:
列头不显示h w,而是显示别名。这个状况。
LOSTCARD语句
当一个观测值占有多个输入行的时候,该语句用于防止丢失输入行后引发的定位错误
通常和IF ... THEN ... 语句一起使用,IF语句用于指出判定数据行丢失的条件
例子:
代码说明:
1)一个观测值占了输入数据的两行;
2)看到303 丢失了一行,出现定位错误。SAS使用LOSTCARD语句防止这种语句的发生。
3)IF ID NE IDCHECK THEN LOSTCARD;
4) 不等于:NE
5)LOSTCARD:进行丢失行进行处理,那么303这行就不进行处理。
INFORMAT/FORMAT语句:
1)INFORMAT语句用来给INPUT指定格式码;
2)FORMAT语句用来给PRINT语句指定格式码;
代码:格式码。
MISSING语句:
用于指出某些数据缺失的原因。
使用一个字母进行MISSING登记,系统遇到MISSING值后,不会按无效数据,而是登记到数据集中。
DATA surv;
MISSING N R;
INPUT num answer @@;
DATALINES;
1001 2 1002 R 1003 1
1004 N 1005 2
PROC PRINT;
RUN;
1)指出数据缺失的原因。格式是数值型的,但是我们N和R,那么结果应该显示为缺失值,用英文逗号显示,但是这边直接显示为N和R。登记在数据集中,指出了数据缺失的原因。
2)正常应用场景:N,无法找到这个人;R:表示Reject的信息;
注释语句:
在编写程序的时候,如果想在程序中加入一些注释以解释程序的作用或变量的意义,可使用注释语句。在语句开头加一个星号,就表示该语句的内容是注释信息而不予执行。
对大段信息的注释,可用/*和*/括起来,表示不执行,以加快调试程序的运行速度。
OPTIONS语句:
作用:OPTIONS语句改变系统的设置。
建立数据集的其他用途:
1)从外部文本数据文件读入数据;
2)从已建立的数据集中读入数据;
3)从Excel等数据单中导入数据;
DATA d1;
INFILE 'E:\sasdt\fit1.txt';
LENGTH name $ 10;
INPUT num $ name sex $ height weight;
PROC PRINT;
RUN;
代码说明:
1)INFILE:从文件中找数据。
从现有数据集中读入数据:
SET 语句:
DATA d3;
SET d1;
RUN;
代码说明:
1)从已有数据集d1中读入数据,建立新的数据集d3。
2)从d1现有的数据集读进来,然后将数据写到d3中;
从Excel表单中读入数据:
SAS 还可以从MySQL Oracle数据库中读数据。