📅  最后修改于: 2021-01-08 14:17:06             🧑  作者: Mango
在上一主题中,我们学习了将多个数据集串联为一个数据集。现在,在本主题中,我们将学习数据集的子设置。
在SAS编程语言中,子设置是通过从数据集中选择特定数量的变量或观察值或两者来完成的。
数据集的子集意味着从数据集中提取并保存特定数量的变量或观测值,或两者兼有。 SAS提供了三种用于子设置的语句:
变量的子设置由KEEP语句和DROP语句完成,而DELETE语句用于观测的子设置。
此外,子设置操作的结果数据被组织在一个新的数据集中,可用于进一步分析。子设置主要用于分析数据集的一部分,而不使用那些可能与分析无关的变量或观察值。
变量的子设置包括从整个数据集中提取和插入特定数量的变量。
KEEP var1 var2 .......;
DROP var1 var2 .......;
哪里,
Var1和var2:这些是数据集中需要保留或删除的变量。
我们可以使用KEEP语句来保存所需变量的值。
考虑下面的数据集,其中包含学生的院校详细信息。如果我们只想使用数据集Student中的studyid和age值,则可以使用KEEP语句。
DATA student;
input studyid name$ sex$ age weight height$;
datalines;
1 Akash m 22 64 120
6 Jaya f 55 63 125
2 Vinita f 34 68 130
7 Kumar m 43 64 130
4 Anita f 29 65 153
5 Taufik m 21 45 110
8 Boby m 32 71 155
3 Ankita f 40 69 120
;
run;
DATA only_two;
SET student;
KEEP studyid age;
RUN;
PROC PRINT DATA = only_two;
run;
在SAS Studio中执行以上代码:
输出:
从输出中可以看到,SASonly保留KEEP语句下提到的变量的值。
我们可以使用DROP语句删除冗余变量的值。
DATA student;
input studyid name$ sex$ age weight height$;
datalines;
1 Akash m 22 64 120
6 Jaya f 55 63 125
2 Vinita f 34 68 130
7 Kumar m 43 64 130
4 Anita f 29 65 153
5 Taufik m 21 45 110
8 Boby m 32 71 155
3 Ankita f 40 69 120
;
run;
DATA only_two;
SET student;
DR0P studyid age;
RUN;
PROC PRINT DATA = only_two;
run;
在SAS Studio中执行以上代码:
输出:
从输出中可以看到,SAS删除了DROP语句中提到的两个变量(学习型和年龄型)。
在观察子集中,我们可以基于单个变量来操纵数据集。它根据给定条件提取变量的值。
IF var condition then DELETE;
哪里,
Var :这是变量的名称,在此基础上,观测值将被删除。
条件:这是布尔条件,返回两个值,一个为true,另一个为false,所有观察将被保存直到条件为true,当条件为false时将删除所有观察。
考虑下面的数据集,其中包含学院的学生详细信息。如果我们仅要求id值小于5的学生的详细信息,则可以使用以下代码:
DATA student;
input studyid name$ sex$ age weight height$;
datalines;
1 Akash m 22 64 120
2 Jaya f 55 63 125
3 Vinita f 34 68 130
4 Kumar m 43 64 130
5 Anita f 29 65 153
6 Taufik m 21 45 110
7 Boby m 32 71 155
8 Ankita f 40 69 120
;
run;
DATA only_two;
SET student;
if studyid <5 then delete;
RUN;
PROC PRINT DATA = only_two;
run;
在SAS Studio中执行以上代码:
输出:
从输出中可以看到,SAS删除了所有id值小于5的观测值。