SAS入门教程12-使用input语句读入原始数据

标签:
input语句sas数据读取教育 |
分类: sas编程 |
使用input语句读入原始数据
读入外部数据文件中的数据;
·读入CARDS语句后面的数据。
一)列输入方式是用来读入严格按列牌号的标准数据。
data scores;
infile datalines truncover;
input names $1-10 sex $11 age 12-15;
datalines;
Justine F12
Bob
M13
;
run;
特点:
·原始数据输入值可以按任意顺序读取;
·字符型原始数据中间可以有空格;
·可以重复读取原始数据记录行的某一部分;
·读入的数据值不需要用空格或者其他分隔符隔开。
列方式输入下空格和(.)都做为缺失值处理,忽略值域开头和结尾部分的空格。
data scores;
infile datalines truncover;
input names $1-10 sex $11 age 12-15;
datalines;
;
run;运行结果同上
二)列表方式下的分隔符默认为空格,用小数点表示缺失值;用列表方式输入数据时,系统扫描整个数据行而不是从某些特殊的列读取数据。
·字符型值的默认长度为8B,也可以用LENGTH,ATTRIB,INFORMAT语句规定长度;
1)data a;
input name & $12. age;
cards;
Jiang zhu 20
Annie zheng 31
I.Altman 60
;
run;
2)DSD选项:
·将默认分隔符改为逗号;
·对于连续的两个分隔符,中间按缺失值处理;
·将字符变量值的引号去掉;
·对引号里的分隔符按字符来对待。
data topics2;
infile datalines dsd;
input speakers : $15. title ~ $40. location &
$10.;
datalines;
Song,"credit derivatives",room 329
zhu,"credit risk management",room 406
;
run;
INFILE语句中的DSD选项自动把数据记录的分隔符设为逗号,并且读入数据之前,把字符数据中的引号去掉,若加上“~”就会保留数据中的引号。
三)格式化方式输入。(input语句读取非标准数据的唯一方法)
1)data a;
input x comma9.2;
datalines;
$1,000.22
;
run;
读入数据是1000.22,若改为input x $9.;则读入数据为$1,000.22。
2)分组格式含有两个列表,每个都括在括号里。第一个指明变量;第二个给出输入格式。
data scores;
input (name score1-score5)($10. 5*4.);
datalines;
whittaker 121 114 137 156 142
smythe 111 97
122 143 127
;
run;
四)命名方式输入(一旦input语句开始使用命名输入格式,SAS要求从这之后的变量值均使用这种方式读入数据)。
1)data a;
input date yymmdd10. fullshr stkcd=$ lstknm=$;
cards;
2001-01-18 1486553100 stkcd=600001 lstknm=邯郸钢铁
;
run;
2)当读入的数据中包含空格时
data list;
informat header $30. name $15.;
input header= name=;
datalines;
header= age=60 and up
name=philp
;
run;
数据行中的数据列至少用两个空格隔开。