INPUT语句:格式修饰符:
“:” 修饰符。表示从下一个非空格列读入数据,直到:1 遇到再下一个空格列; 2 读到预先定义的变量长度; 3 数据行结束。哪个先出现就在哪儿结束。
“&” 修饰符。表示从下一个非空格列读入数据,知道:1 遇到连续的两个空格;2 在DATA步中定义的最初的变量长度; 3 输入行结束。哪个先出现就在哪结束。
代码说明:
1)Li Li:我们看到人的名称中间有空格,通过&修饰符,预先定义的变量长度为12。
2)Wang Da Zhi: 名称中间有空格,变量长度是12, 通过&修饰符来解决变量空格不稳定的问题。可见SAS的设计构思还是很巧妙的。
INPUT语句:指针控制:
列指针:
绝对指针控制:数值型(指出位置)、字符型(指出要匹配的字符串)
相对指针控制
行指针
列指针: 绝对指针控制:从这行的哪个列开始读
数值型指针 字符型指针
数值型指针:
@n: INPUT @15 sales 5.;
@指针变量:A=25; INPUT num 1-6 @A num $ 10.;
@ 表达式
代码说明:
1)读出的结果是67 123
字符型指针:
三种形式:@'字符串', @字符变量, @字符表达式
代码说明:
1)有点搜索子串的意思。
2)输出结果是343 123
列指针:相对指针控制
三种形式:+n, +指针变量, +表达式, 意指把指针从当前位置移过规定的列数
负数表示指针往前移动
例子
代码说明:
1)+5: 从当前位置往右移动数字那边多字符。
2)-1: 从当前位置往左移动1位字符。
行指针:
适用于一个观测值占有多个输入行的情况。
4种形式:#n, #指针变量,#表达式, /
INPUT语句中,#号后最大的数字决定每个观测占有多少行
/表示把指针移动到下一输入行的第一列
当每个观测有多个输入行,但不从最后一行读取数据的时候,在INPUT语句末尾必须使用#将指针移到最后一行。
例子:
说明:
1)也就是说,多个输入行才能构成数据集中的一行。
2)#3 表示跳到第三行。#指针变量:指针变量中存了一个值,跟#n的意思是一样的。
3)/ : 把指针 移动到下一输入行的第一列。
4)例子1, #3后最大的数字决定了每个观测占用多少行。也就是每输入3行来产生一个输入值。
5)#4:跳第四行,只是告诉每个观测行占用4行。
6)/: 跳到下一行。
7)行指针,实现我们比较复杂的读取,非结构化的文件用这个读还是比较方便的。
行保持说明符:
多个INPUT语句读取同一行数据行的数据,使用单尾随符@
一个INPUT语句在一个输入行中读取多个观测,则使用双尾随符@@
例子:
代码说明:
1)行保持,就是不换行;数据只有一行,输出三行。这个就是行保持的概念。