使用COALESCEC填充缺失值

时间:2013-12-11 20:29:16

标签: sas

有人会确认COALESCE或COALESCEC功能是否适用于以下命令?

我想将一个非缺失的相应观察的匹配值分配给缺失的观察值。

因此,如果数据如下:

 Order  |   ID  
 apple     101xa  
 orange    201xb
 cherry    301xc
 apple       .

我最终会:

 Taxo  |   Specialty2  
 apple     101xa  
 orange    201xb
 cherry    301xc
 apple     101xa

感谢您的支持!

编辑:使用当前代码 -

proc sort data=fill; 
    by taxo descending specialty2;
run;

data fill_input;
    set fill;
        retain tempspecialty2;
        length tempspecialty2 $5;
            by taxo;
                if first.taxo then tempspecialty2=' ';
                if not missing(specialty2) then tempspecialty2=specialty2;
                else tempspecialty2=specialty2;
run;

proc freq data=fill_input;
    table tempspecialty2;
run;

1 个答案:

答案 0 :(得分:2)

数据步骤功能不太适用;越过行边界需要您将值保存在临时变量中。

您需要做的是按order排序。然后,您可以将ID的值保存在临时保留变量中,并在需要时使用它。

proc sort data=have; 
by order;
run;

data want;
set have;
retain tempID;
length tempID $5;
by order;
if first.order then tempID=' ';
if not missing(id) then tempID=id;
else id=tempID;
run;

如果你不能改变行的顺序,那么你需要以不同的方式解决这个问题,使用哈希表或格式或类似的东西。