次の 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;