以下 SAS 代码应该从包含名为“Radvalue”的数字变量的数据集中读取。Radvalue 是散热器的温度,如果散热器关闭但温度升高 2 或更多,则表明它已经启动,如果它打开但其温度降低 2 或更多,则表明它消失了。Radstate 是数据集中的一个新变量,它指示每次观察时散热器是打开还是关闭,这就是我试图为整个数据集自动填充的变量。所以我尝试使用 LAG 函数,尝试初始化第一行,它没有 dif_radvalue,然后尝试将我刚才描述的算法应用到第 2 行以后。知道为什么 Radstate 和 l_radstate 列完全空白吗?
非常感谢!!如果我没有清楚地解释问题,请告诉我。
Data work.heating_algorithm_b;
Input ID Radvalue;
Datalines;
1 15.38
2 15.38
3 20.79
4 33.47
5 37.03
6 40.45
7 40.45
8 40.96
9 39.44
10 31.41
11 26.49
12 23.06
13 21.75
14 20.16
15 19.23
;
DATA temp.heating_algorithm_c;
SET temp.heating_algorithm_b;
DIF_Radvalue = Radvalue - lag(Radvalue);
l_Radstate = lag(Radstate);
if missing(dif_radvalue) then
do;
dif_radvalue = 0;
radstate = "off";
end;
else if l_Radstate = "off" & DIF_Radvalue > 2 then Radstate = "on";
else if l_Radstate = "on" & DIF_Radvalue < -2 then Radstate = "off";
else Radstate = l_Radstate;
run;