使用COLUMN input和FORMATTED input读入固定位置的外部文件;如下图所示,
1.COLUMN input (按列数读入外部文件数据)
使用column input 不需要按从左到右的顺序读取外部文件的数值,可以是任意读取,也可以重复读取,如下所示,(先读入的是第21至第22列的数据);
原数据:
程序:
结果:
2.标准数值形式
SAS目前认可的标准数值形式有:数值、小数点、E(科学计数法)、+/-符号
非标准的数值形式:%、$、","、分号、日期和形式、二进制或十六进制的形式
对于非标准的数值形式如果还需按数值读入SAS数据,则不可以使用column input,需使用formatted input;
3.formatted input(指定读入的格式:informat)
基本格式如下: input <pointer control> variable format;
pointer control:指针控制,说明开始读入的第1列(非必须),@n表名第n列,+n标明在现有往前n列;-n标明在现有往前n列;通过调整指针的位置可以按任意顺序读入数据;值得注意的是读完后指针会放在末列后加1位;
variable: 变量名
format: 读入的数据格式
举例如下:
上述 $表示字符,数字表示字符宽度;如$w.;
数值型变量w.d,w表示总宽度,d表示小数位数,如果没有设置d则小数位数保持如数值,为了小数位数全部读入进去w必须包括数值的总长度,如果长度不够,将截断小数位数;
但值得注意的是尽管在INPUT 语句设置数值变量读入的宽度,但是在SAS存储仍然8字节的浮点数,与数值宽度无关;如下所示:
含有逗号的数值,则使用特定的形式如commaw.d(w和d含义同上);
上述文件读入SAS结果如下:
SAS支持可读入的非标准数据为数值的格式(包括但不限于):
值得注意的是 COMMAw.d可移除如下特殊字符来读入数值:
空格,逗号,连接号(-),$,%,),“(”(左括号会视为负号放入数值)
4.INFILE 常用的选项PAD 和LRECL
PAD 选项会将每条记录末端空格补齐
如上*号表示结束该行读取
加上PAD选项,则会补足空格,让末端的结束在同一列。
LRECL= 是将设置每行最大可以读入的长度