SAS对多个变量排序详细图解

在上一个主题中, 我们学习了SAS中的PROC排序, 并看到我们可以根据升序或降序对数据值进行排序, 也可以根据我们自己选择的变量对数据值进行排序。我们还研究了可以通过同时获取多个变量来执行排序, 但是实际上还没有这样做。
现在, 让我们看看如何使用多个变量对数据值进行排序及其局限性。
SAS允许对多个变量进行排序, 因此我们可以同时对多个变量进行排序。但是请考虑一下, 如果我们指示SAS以升序(或默认)顺序对多个变量进行排序, 并且所有变量都包含整数值, 那么SAS应该选择哪个变量进行排序。让我们通过一个例子来理解:

data student; input roll age $; datalines; 101 14102 13103 15104 12; run; proc sort data=http://www.srcmini.com/student; by roll age; run; proc print data=student; by roll age; run;

在上面的示例中, 我们给出了两个变量roll和age进行排序, 并且它们都是整数值, 因此SAS应该选择哪个变量进行sort, roll或age。答案是, SAS将考虑第一个声明的变量, 即roll, 如果第一个变量具有两个或两个以上相同的值, 则它将考虑第二个变量进行排序。
例:
假设有一个名为” 学生” 的数据集, 它包含班级学生的数据, 例如卷数, 姓名, 比赛, 年龄, 体重和身高。为了进行排序, 我们使用了两个变量, 即体重和年龄, 并且排序顺序是默认的。
data student; input roll name$ game$ age weight height$; datalines; 1 Anuj football 22 64 1615 Anuj tenis 23 64 1552 Binita bedminton 30 64 1597 Binita football 29 74 1644 Anita tenis 29 65 1533 Tarun football 21 70 1626 Preeti bedminton 24 57 157; run; proc sort data=http://www.srcmini.com/student; by weight age; run; proc print data=student; by weight age; run;

在SAS Studio中运行代码:
SAS对多个变量排序详细图解

文章图片
输出
SAS对多个变量排序详细图解

文章图片
【SAS对多个变量排序详细图解】在输出中, 我们可以看到排序是基于权重进行的。但是三个学生的权重是相同的, 因此, 在这种情况下, 它考虑的年龄(第二个声明变量)为年龄(仅对这三个相同的值进行排序, 在这些值之后, 它将再次增加权重)。
请参见另一个示例, 其中首先提到了包含字母值的变量名称。
data student; input roll name$ game$ age weight height$; datalines; 1 Anuj football 22 64 1615 Lata tenis 23 60 1552 Vinita bedminton 30 65 1597 Kumar football 29 74 1644 Anita tenis 29 65 1533 Tarun football 21 70 1626 Preeti bedminton 24 57 157; run; proc sort data=http://www.srcmini.com/student; by name age; run; proc print data=student; by name age; run;

在SAS Studio上运行代码:
SAS对多个变量排序详细图解

文章图片
输出
SAS对多个变量排序详细图解

文章图片
我们可以在输出中看到它也根据首先提到的变量名进行排序。
局限性 SAS排序有一个限制。在某种情况下, 当我们引用一个包含字母数据值的变量进行排序时, 但是某些值以大写字母开头, 而有些则以小写字母开头, 则排序的顺序是这样的, 首先是大写字母, 然后是大写字母。最后是小写字母。让我们来看一个例子:
data student; input roll name$ game$ age weight height$; datalines; 1 Anuj football 22 64 1615 lata tennis 23 60 1552 Vinita badminton 30 65 1597 Kumar football 29 74 1644 Anita tennis 29 65 1533 Tarun football 21 70 1626 preeti badminton 24 57 157; run; proc sort data=http://www.srcmini.com/student; by name game ; run; proc print data=student; by ; run;

在SAS Studio上运行代码:
SAS对多个变量排序详细图解

文章图片
输出
SAS对多个变量排序详细图解

文章图片
我们可以在输出中看到, 数据值以大写字母开头, 而小写字母结尾。

    推荐阅读