有人会确认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;
答案 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;
如果你不能改变行的顺序,那么你需要以不同的方式解决这个问题,使用哈希表或格式或类似的东西。