如何用proc sql生成宏变量?

电子说

1.2w人已加入

描述

上节我们讲了PROC SQL的基本结构,以及一些sql命令的使用,这节我们主要讲一下case...when...、order by 、group by 、update、delete语句以及如何用proc sql生成宏变量。

示例1:有条件地赋值——case...when

Proc步中的 case...when... 相当于data步中的 if...then... 根据某种条件输出最终结果。

avg

结果如下:

avg

示例2:对数据进行排序——order by

(1)默认按升序排列

avg

结果如下:

avg

(2)按降序排列

avg

结果如下:

avg

示例3:检索满足条件的行——where

**  当我们想要选择表中的某些观测时,可以使用where**来选择符合特殊条件的观测。

avg

结果如下:

avg

示例4:对数据进行分组——group by

  GROUP BY子句使SELECT语句的结果按子句中列出的一个或多个变量的每次不同出现进行汇总或汇总。只有在SELECTHAVING子句中包含一个或多个汇总函数(SUM、AVG、MIN、MAX)时,GROUP BY子句才会添加到SELECT语句中。

(1)用group by进行分组

avg

结果如下:

avg

(2)Having指定条件

  说到指定条件,我们最新想到的往往是where子句,但是where子句只能指定行的条件,而不能指定组的条件,因此便有了Having子句,它用来指定组的条件,我们来看个示例:

我们想要了解平均体重大于100的是男性还是女性

avg

结果如下:

avg

示例5:子查询

查询语句中包含查询语句,执行时先执行子查询,后执行外部查询,根据包含子查询的子句,子查询可以返回一个值或多个值。

avg

结果如下:

avg

示例6:更新SAS表——Update

我们可以使用**SQL Update**语句更新SAS表。下面我们首先创建一个名为class的新表,然后使用SQL Update语句去更新它。

avg

结果如下:

avg

示例7:删除操作——Delete

**SQL**中的删除操作涉及使用**SQL DELETE**语句从表中删除某些值.我们可以继续使用示例中的数据,并从表中删除age大于等于13的观测。

avg

结果如下:

avg

示例8:创建宏变量——INTO

给宏变量赋值,**Data**步和**Proc**步都能实现,不过从操作灵活性上讲,**Proc**步要更胜一筹。**Proc**步生成宏变量就需要用到**INTO**子句,下面来具体介绍一下**INTO**子句如何使用。

(1)指定一个宏变量

avg

结果如下:

avg

(2)指定多个宏变量

avg

结果如下:

avg

(3)指定一个宏变量来保存一列的所有值

avg

结果如下:

avg

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分