1.读入SAS 数据集
格式如下:
data sas-data-set;
set sas-data-set;
run;
sas-data-set 是数据集名称,可以是libname.filename的形式
举例如下:
2.在DATA步使用BY 语句
BY variable语句使用方法:
a.必须在PROC SORT里面进行排序
b.为每个BY里面variable创建两个临时变量,first.variable和last.variable,分别表示按每个变量分组后第一行观测值和最后一行观测值。
举例如下:
结果如下:
当BY语句里面有多个变量时举例如下:
数据向量如下:
结果如下:
3.POINT =variable选项和STOP
variable是临时数值变量,不会输出到SAS数据集,该选项可以定位读入哪一个观测,而不需要读入其前面的观测,必须在SET语句使用。
举例如下:
如上只读入第5行观测。
如果只使用POINT选项,由于没有终止读入数据的标志,因此会陷入循环读入此行数据的陷阱,可以使用如下方法来避免:
a.使用STOP语句,该语句会停止使用当前数据步(data step),在当前数据步(data step)后恢复执行能力;
b.可以使用_ERROR_=1来终止连续循环,因为如果在POINT= variable读取的是无效数值则会将_ERROR_=1;
举例如下:
如上所示程序,会读入第5行数据,但是不会输出到OUTPUT,因为将PDV(数量向量)的数据输出到OUTPUT数据集需要在DATA步末尾才行,在上述程序中在DATA步结束时则使用STOP语句终止当前数据步执行,因此可以在STOP语句前加上OUTPUT语句来输出数据集;
如下所示:
4.OUTPUT 语句
如下所示,只在FULL数据集中才会有观测。
5.END=variable option
与SET 语句联用,该variable是临时变量,不会输入到SAS数据集表明何时是最后一行观测,最行一行观测为1,其余时为0。
举例如下:
结果如下:
如上述程序,用last 来标识是否为最后一行数据,在IF语句表示只输出最后一行数据。
6.读入SAS数据集逻辑
DATA 步读入SAS数据集的逻辑与读入外部文件逻辑基本一致,但是SAS对于SET 语句读入的变量名(即SET 语句数据集中已有的变量)在PDV(数据向量)读入下一行数据前会保留上一行值到下一行;但是对于在DATA步新建的变量同读入外部文件一样会保持缺失,只有使用RETAIN 或在SUM语句新建变量会保留上一行数据。