新浪博客

sas缺失值missing data详解

2009-08-10 22:14阅读:
sas缺失值missing data详解

有数据的地方就有缺失值,正确管理缺失值,对我们写出清晰明了的代码非常有帮助。本文对SAS中的缺失值作一个详细的介绍。

转载请注明出处:http://blog.sina.cn/dpool/blog/s/blog_5d3b177c0100e6lm.html?vt=4

1 SAS的缺失值
SAS的缺失值分为两类,一类是数值型的缺失值,用(.)表示,另一类是字符型的缺失值,用(’’)或者(’ ‘)表示。例:
data miss1;
input charmiss $ 1 nummiss 3;
cards;
A 1
B
3
D 4
;
proc print;
run;
结果:
Obs charmiss nummiss
1 A 1
2 B .
3 3
4 D
4

除了上述的表示方式之外,我们还可以用特殊字符A-Z或_来表示(如.Z等),这在调查问卷等很有用,比如A表示不回答,N表示不知道,R表示未回复,_表示拒绝等。这样子使得缺失值有不同的含义,例:
data miss2;
input charmiss $ 1 nummiss 3-4;
missing n a r _;
cards;
A -1
A .
B r
3
D 0
a
E 6
F n
G _
;
proc print;
run;
结果:
Obs charmiss nummiss

1 A -1
2 A .
3 B R
4 3
5 D 0
6 A
7 E 6
8 F N
9 G _
除此这外,我们还可以对不同的缺失缺赋予不同的格式。例:
proc format;
value spec .='Missing'
._='Illegible'
.R='Refused'
.N='Not Done'
.A='Absent';
run;

proc print data=miss2;
var charmiss nummiss;
format nummiss spec.;
run;
结果:
Obs charmiss nummiss

1 A -1
2 A Missing
3 B Refused
4 3
5 D 0
6 Absent
7 E 6
8 F Not Done
9 G Illegible

2 缺失值的引用
我们先查看一下不同的缺失值的排序方式:
proc sort data=miss2 out=miss3;
by nummiss;
run;
proc print data=miss3;
run;
结果:
Obs charmiss nummiss
1 G _
2 A .
3 A
4 F N
5 B R
6 A -1
7 D 0
8 3
9 E 6
我们从上面的结果可以看到,从小到大的排序结果为:_ . A N R然后是数字。

缺失值的引用1:查看数据集中nummiss非.的数据
proc sort data=miss2(where=(nummiss ne .)) out=miss3;
by nummiss;
run;
proc print data=miss3;
run;
结果:
Obs charmiss nummiss
1 G _
2 A
3 F N
4 B R
5 A -1
6 D 0
7 3
8 E 6

缺失值的引用2:查看数据集中nummiss非空的数据
proc sort data=miss2(where=(nummiss not in (. ._ .r .a .n))) out=miss3;
by nummiss;
run;
proc print data=miss3;
run;
结果:
Obs charmiss nummiss
1 A -1
2 D 0
3 3
4 E 6

缺失值的引用3:查看数据集中nummiss非.Z的数据
proc sort data=miss2(where=(nummiss le .z)) out=miss3;
by nummiss;
run;
结果:
Obs charmiss nummiss
1 G _
2 A .
3 A
4 F N
5 B R

缺失值的引用4:查看数据集中nummiss比.Z大的数据
proc sort data=miss2(where=(nummiss gt .z)) out=miss3;
by nummiss;
run;
结果:
Obs charmiss nummiss

1 A -1
2 D 0
3 3
4 E 6

缺失值的引用5:查看数据集中charmiss非空的数据
proc sort data=miss2(where=(charmiss ne '')) out=miss3;
by nummiss;
run;
结果:
Obs charmiss nummiss
1 G _
2 A .
3 F N
4 B R
5 A -1
6 D 0
7 E 6

缺失值的引用6:查看数据集中nummiss非空数据
proc sort data=miss2(where=(nummiss is not missing)) out=miss3;
by nummiss;
run;
或者:
proc sort data=miss2(where=(nummiss is not null)) out=miss3;
by nummiss;
结果:
Obs charmiss nummiss
1 A -1
2 D 0
3 3
4 E

我的更多文章

下载客户端阅读体验更佳

APP专享