考虑以下数据集测试:
x y
1 A
2 A
. A
4 A
. B
. B
7 B
8 B
基本上我希望组中的缺失值被前一个值替换。但如果之前的值来自另一个组,则不要使用该值来替换当前值。
考虑以下代码:
proc sort data=testout=Sorted;
by y;
run;
data Out2(drop=_x);
set Sorted;
by y;
retain _x;
if first.y then do;
_x=x;
end; else do;
if missing(x) then do;
x = _x;
end; else do;
_x = x;
end;
end;
run;
x背后的下划线是什么意思(_x)?
答案 0 :(得分:2)
使用下划线作为前缀是临时变量的一种相当常见的命名约定。就SAS而言,_x只是另一个变量 - _并没有任何特殊效果。但是,如果所有的临时变量(以及那些临时变量)都以下划线开头,那么在数据步骤结束时整理工作的工作量就会减少,因为您可以使用:通配符将它们全部放在一个中走。 e.g。
data example;
set sashelp.class;
_age = age;
_sex = sex;
drop _: ;
run;
答案 1 :(得分:1)
_x
只是一个新变量。它可以很容易z
或last_x
。但是,读取代码的人可能会更清楚它与x有关;虽然我不知道任何类似于&#34的约定; _表示"的先前值,但它不是不合理的。