(从内部导入)Datelines一定是DATA Step的最后一个语句,除非SAS遇到分号,所有datelines后面的语句都被看作是数据:
1 DATA A;2 INPUT a $ b $ c;3 datalines;4 adams F 12 5 Lincon M 166 ;7 RUN;
(从外部导入)Infile语句紧跟在DATA语句后面,但一定要在INPUT语句前面:
1 DATA B;2INFILE 'C:\MYRAWDATA\B.dat';3INPUT a $ b$ c;4 RUN;
LRECL=option:处理Long records 的办法,record length指的是每一行数据的包括空格在内的字符数,SAS假定是256,若数据较长,则SAS可能读不完所有的数据:
1 INFILE 'C:\DATA\b.dat' LRECL=2000;
@n:column pointer命令SAS移动到第n列,注意在INPUT语句中一定要放在变量名之前
1 INPUT a $ 1-22 b $ Year @40 acre comma9.;2 /*表示在读入acre数据之前,SAS移动到第40列*/
@'character':即跟在某个特定的单词或字母(character)后面
1 INPUT @ 'bread:' Dogbreed $;
colunm modifier:命令SAS遇到空格就停下来
1 INPUT @'bread:' Dogbreed $;/*输出:Rottweil(默认长度为8)*/2 3 INPUT @'bread:' Dogbreed $20.;/*输出:Rottweil vet bill*/4 5 INPUT @'bread:' Dogbreed :$20.;/*输出:Rottweil(遇到空格停止)*/
读入数据小工具(/,#n,@@,@):
/:令SAS跳到SAS的下一行读入;
#n:令SAS跳到SAS的第n行读入;
@@:若数据中出现了一行有多个观测值时,应在INPUT语句最后加上@@;
@: 命令SAS停留在这里,用户可通过IF语句判断这一行到底该不该读入,若需要,则SAS才会继续读入该行的其他变量,若不需要,后面的INPUT语句就不会执行:
1 INPUT TYPE $ @;2 IF TYPE ='surface' THEN DELETE;3 INPUT NAME $ 9-27 C D;
MISSOVER:命令SAS如果该行数据读完了,不要读下一行数据,剩下的未读变量全部赋值为缺失值;
TRUNCOVER:适用于采用column或formatted input 方法,且某些数据行比其他行要短的情形。它命令SAS仅当遇到数据行的末端或者在format or column输入指定的最后一列时才停止输入。
/*MISSOVER与TRUNCOVER的相似与区别*/
若数据在读入该变量之前就终止,则MISSOVER与TRUNCOVER都会赋予该变量缺失值;
若数据在读入该变量中间就终止(比如定义3-12,到第六列就完了),则MISSOVER会赋予该变量缺失值;TRUNCOVER则会有多少分配多少DLM:指定读入文件的分隔符。注意,若分隔符是tab,则需要用DLM='09'X(IBM中为'05'X);若分隔符为字符串,则用DLMSTR=option选项。DSD option:功能
1 默认分隔符是逗号,若不是,用DLM=更改;2 数据中的引号不读入;3 引号内的分隔符不被读入;4 连续中两个连续的分隔符看作是缺失值。