赞
踩
在大型数据处理中往往会遇到数据缺失的情况,如何处理缺失值尤为重要,对于缺失值处理的理论知识这里不一一概述,在此介绍一下SAS如何删除变量值皆为缺失值的变量(也就是删除全为缺失值的一列)。
在SAS中数据只有两种类型:数值型和字符型。基于这一点,我们在此介绍一种利用数组进行变量删除的方式:
此处使用的数据集包括9个变量,22条观测。
SAS代码如下:
data temp;set new;array arr1{*} _numeric_;array arr2{*}
_character_;do i=1 to dim(arr1);if missing(arr1(i)) then
do;variable =vname(arr1(i));output;end;end;do j = 1to dim(arr2);if
missing(arr2(j)) then do;variable = vname(arr2(j));
output;end;end;keep variable;run;proc sql;create table miss
asselect variable ,count(*) as frequency from temp group by
variable;quit;proc sql;alter table new drop C_var1;alter table new
drop N_var1;quit;
其中new为需要进行删除的数据集,其中data步将两种类型的数据分别进行处理,找出带有缺失值的变量名,保存在temp中,具体运行结果如下:
随后我们将所得的temp数据集进行处理,由于简单的从temp来看,并不能看出哪些是需要删除的变量,因此我们利用sql对其中的数据计算频数。得到以下结果:
因此,对于此数据集,需要删除的只有两个变量。最后,我们利用sql对原始数据集new进行变量删除。
其他删除变量值皆为缺失值的变量方式,欢迎补充,互相学习。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。