📜  SAS多变量排序

📅  最后修改于: 2021-01-08 14:12:14             🧑  作者: Mango

对多个变量排序

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

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

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中运行代码:

输出量

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

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

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排序有一个限制。在某种情况下,当我们引用一个包含字母数据值的变量进行排序时,但是某些值以大写字母开头,而有些则以小写字母开头,则排序的顺序是这样的,大写字母首先排序,然后最后是小写字母。让我们来看一个例子:

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上运行代码:

输出:

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