我正在研究一个{strong>缺少值的SAS Dataset
。
我可以使用IS NULL/IS MISSING
运算符来确定特定变量是否缺少值。
是否有其他方法可以用来识别一次中哪些变量缺少值。
预先感谢
答案 0 :(得分:2)
语法IS NULL
或IS MISSING
仅限于在SQL代码中使用(在WHERE
语句或WHERE=
数据集选项中也是如此,因为它们本质上使用相同的解析器。)< / p>
要测试是否缺少值,您还可以使用MISSING()
函数。或将其与缺失值进行比较。因此,对于字符变量,请测试其是否等于所有空格:c=' '
。对于数字,您可以测试x=.
,但还需要注意特殊的缺失值。因此,您可以测试是否x <= .z
。
要快速了解每个变量的不同缺失值的数量,可以使用PROC FREQ上的NLEVEL选项。请注意,它可能不适用于具有太多不同值的大型数据集,因为该过程将耗尽内存。
答案 1 :(得分:1)
使用数组和vname查找缺少值的变量。如果您想要缺少值的行,请使用cmiss函数。
data have;
infile datalines missover;
input id num char $ var $;
datalines;
1 . A C
2 3 D
5 6 B D
;
/* gives variables with missing values*/
data want1(keep=miss);
set have;
array chars(*) _character_;
array nums(*) _numeric_;
do i=1 to dim(chars);
if chars(i)=' ' then
miss=vname(chars(i));
if nums(i)=. then
miss=vname(nums(i));
end;
if miss=' ' then
delete;
run;
/* gives rows with missing value*/
data want(drop=rows);
set have;
rows=cmiss(of id -- var);
if rows=1;
run;
答案 2 :(得分:1)
您可以在缺少选项的情况下使用proc freq表语句。如果存在缺失值,则它包括缺失类别。对于分类数据很有用。
data example;
input A Freq;
datalines;
1 2
2 2
. 2
;
*list variables in tables statement;
proc freq data=example;
tables A / missing;
run;
您还可以使用Proc Univariate,如果存在任何缺失值,则默认情况下会在ODS中创建MissingValues表。对于数字数据很有用。
答案 3 :(得分:1)
我可以建议的两个选项(除了PeterSlezák的以外)是: -使用proc手段和nmiss
proc means data = ___ n nmiss;
var _numeric_;
run;
希望这会有所帮助, 问候, 桑达莱什