个性化阅读
专注于IT技术分析

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

在上一个主题中, 我们学习了SAS中的PROC排序, 并看到我们可以根据升序或降序对数据值进行排序, 也可以根据我们自己选择的变量对数据值进行排序。我们还研究了可以通过同时获取多个变量来执行排序, 但是实际上还没有这样做。

现在, 让我们看看如何使用多个变量对数据值进行排序及其局限性。

SAS允许对多个变量进行排序, 因此我们可以同时对多个变量进行排序。但是请考虑一下, 如果我们指示SAS以升序(或默认)顺序对多个变量进行排序, 并且所有变量都包含整数值, 那么SAS应该选择哪个变量进行排序。让我们通过一个例子来理解:

data student;
input roll age $;
datalines;
101 14
102 13
103 15
104 12
;
run;
proc sort data=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 161
5 Anuj tenis 23 64 155
2 Binita bedminton 30 64 159
7 Binita football 29 74 164
4 Anita tenis 29 65 153
3 Tarun football 21 70 162
6 Preeti bedminton 24 57 157
;
run;  
proc sort data=student;
    by weight age  ;
run;
proc print data=student;
    by weight age;
run;

在SAS Studio中运行代码:

SAS对多个变量排序

输出

SAS对多个变量排序

在输出中, 我们可以看到排序是基于权重进行的。但是三个学生的权重是相同的, 因此, 在这种情况下, 它考虑的年龄(第二个声明变量)为年龄(仅对这三个相同的值进行排序, 在这些值之后, 它将再次增加权重)。

请参见另一个示例, 其中首先提到了包含字母值的变量名称。

data student;
input roll name$ game$ age weight height$;
datalines;
1 Anuj football 22 64 161
5 Lata tenis 23 60 155
2 Vinita bedminton 30 65 159
7 Kumar football 29 74 164
4 Anita tenis 29 65 153
3 Tarun football 21 70 162
6 Preeti bedminton 24 57 157
;
run;  
proc sort data=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 161
5 lata tennis 23 60 155
2 Vinita badminton 30 65 159
7 Kumar football 29 74 164
4 Anita tennis 29 65 153
3 Tarun football 21 70 162
6 preeti badminton 24 57 157
;
run;  
proc sort data=student;
    by name game ;
run;
proc print data=student;
    by ;
run;

在SAS Studio上运行代码:

SAS对多个变量排序

输出

SAS对多个变量排序

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


赞(0) 打赏
未经允许不得转载:srcmini » SAS对多个变量排序详细图解
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏