美文网首页
如何批量删除SAS数据集中的特定变量--宏程序

如何批量删除SAS数据集中的特定变量--宏程序

作者: 野藤_ | 来源:发表于2020-04-19 07:30 被阅读0次

    前面的文章中介绍了如何批量删除SAS数据集中的特定变量--Call Execute, 今天来介绍如何使用宏程序来进行实现。

    回顾一下名题:假设WORK逻辑库中有10个数据集,其中8个数据集存在的变量var1、var2,但不知晓具体是哪8个数据集。现在要将这这两个变量从这8个数据集中删除,如何实现这个效果呢?前半部分的过程,筛选出含有要删除变量的数据集的操作是相同的。


    输出WORK逻辑库中包含变量var1和var2的数据集名称 输出结果

    筛选出数据集名称和变量名称后,我们需要将这两个变量的值赋值得到宏变量中,方便宏程序引用。输出数据集中有4条观测,8个变量值,我们需要将这8个值赋值到宏变量中;引用这些宏变量,我们需要做一个循环,要考虑循环次数,也要将这个值赋值到宏变量中。以下是实现代码:数据集选项 end=是用来判断是否读取到数据集最后一条记录;_n_记录具体的每一条观测数,用来生成批量生成宏变量名以及记录观测总数;三个Call symput语句分别生成了储存数据集名称(memname)、变量名称(name)和观测总数(nobs)的三类宏变量。

    Data步中赋值宏变量

    获取到要删除变量的数据集和变量名信息后,使用下面宏循环程序进行批量删除。首先,我们要判断是否有需要删除变量的数据集。如果不进行判断,直接删除,当宏变量nobs为空时,程序会报错。前面的数据集有4条记录,nobs=4,所以这个循环会进行4次,并且每次删除数据集一个变量。为提高运行效率,我们也可以一次性删除数据集中要删除的变量,需要把数据集中的变量信息整合到一块。可以参考Call Execute中的处理,这里不再叙述。

    宏循环删除变量

    相关文章

      网友评论

          本文标题:如何批量删除SAS数据集中的特定变量--宏程序

          本文链接:https://www.haomeiwen.com/subject/zbaivhtx.html