2024-07-08 base SAS programming学习笔记10(read data)

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语句新建变量会保留上一行数据。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值