在使用SAS进行数据处理分析之前,首先需要获取数据。
读入外部的分隔符数据文件进SAS是常用的一种方式。一般使用data
步中的infile
语句或者proc import
过程步。
这里先学习infile
语句的方式,介绍几个infile
语句中的选项
。
infile
语句放在data
步input
语句的前面,形式一般为:
infile "file_pathway" options;
file_pathway
是文件的完整路径,options
是一些选项设置,下面我们挑选几个常用的进行说明。
-
firstobs=
firstobs=
告知SAS从第几行开始读取数据。例如,有些外部文件第一行是列名,但我们不想读入,从第2行开始读入:
infile "file_pathway" firstobs = 2;
- obs=
当我们想读入部分数据,可以使用obs=
选项,它告知SAS读到哪一行停止。例如,obs=100
表示读取100
行数据。
infile "file_pathway" obs = 100;
obs=
可以和firstobs=
配合读取文件的中间数据。
- MISSOVER
默认情况下,SAS读取完一行,如果还有变量没有赋值,会转到下一行继续读取。MISSOVER
告知SAS,不要转到下一行,剩余未赋值变量分配缺失值。
data hahaha;
infile cards missover;
input var $ value1 value2 value3 ;
cards;
apple 1324 3556 98
banana 23 11
orange 34
;
run;
proc print data =hahaha noobs;title; run;
打印结果:
var | value1 | value2 | value3 |
---|---|---|---|
apple | 1324 | 3556 | 98 |
banana | 23 | 11 | . |
orange | 34 | . | . |
- TRUNCOVER
适用于列输入(指定变量起始结束列数)和格式化输入方式读取数据时,一些数据行比其他行短的情况。
默认情况下,SAS会转到下一行继续为这个变量读取数据。
TRUNCOVER
选项告诉SAS,读取数据时,直到行结尾时,或者格式或者列指定范围最后1列,停止读取。
使用书中例子进行说明:
data fafafafa;
infile cards truncover;
input name $ 1-15 number 16-19 street $ 22-37 ;
cards;
John Garcia 114 Maple Ave.
Sylvia Chung 1302 Washington Drive
Martha Newton 45 S.E. 14th St.
;
run;
proc print data =fafafafa noobs;title; run;
打印结果:
name | number | street |
---|---|---|
John Garcia | 114 | Maple Ave. |
Sylvia Chung | 1302 | Washington Drive |
Martha Newton | 45 S.E. | 14th St. |
如果没有truncover
选项,第一个和第三个观测将去下一行读取数据。
- TRUNCOVER和MISSOVER
- 如果原始数据行在变量作用域开始前结束,两者都为变量分配缺失值;
- 如果原始数据行在变量作用域中间结束,
TRUNCOVER
尽量读取可用数据,MISSOVER
直接分配缺失值。
网友评论