保留缺失值的变量

时间:2013-11-09 06:50:11

标签: sas

应该是一个简单的问题。我有一个像这样的数据集:

id mtna
1  .
2  .
3  1.7
4  .
5  .
6  5.2
7  9.6
8  .
9  .
10 .

我想要这样的事情:

id mtna 
1 . 
2 . 
3 1.7 
4 1.7 
5 1.7 
6 5.2 
7 9.6 
8 9.6 
9 9.6 
10 9.6 

基本上只有在缺失值时才保留过去的观察结果。 所以我尝试这样的事情:

data check; set check; 
retain lag_mtna; 
lag_mtna=lag1(mtna); 
if mtna=. then mtna=lag_mtna; 
run; 

但后来结果是这样的:

id mtna 
1 . 
2 . 
3 1.7 
4 1.7 
5 . 
6 5.2 
7 9.6 
8 9.6 
9 . 
10 .

我如何保留所有这些价值观?谢谢你的帮助。

2 个答案:

答案 0 :(得分:3)

无需保留来自数据集的变量。 添加一些技巧,可能是这样的:

data check;
set check (rename=(mtna=orig_mtna));
retain mtna;
mtna=coalesce(orig_mtna, mtna);
drop orig_mtna;
run;

答案 1 :(得分:0)

感谢您的关注。我通过一种简单的方式解决它。

data check; set check;
retain mtna_new mtna;
if mtna ne . then mtna_new=mtna;
run;