如果你想-1到1之間的輸入值,那麼你應該儘量保留,你一個新的變量,然後如果前一個值爲-1,則分配一個值,如果當前值爲1,則停止爲其分配一個值。如果您希望在sam中使用這些值e變量,然後根據它們的值將它們寫入新變量。
首先我們做一些樣本數據。
data test;
infile datalines;
input id $1. flag best8.;
datalines;
1 -1
1
1
1
1
1 1
2 -1
2
2 1
2
;
run;
然後代碼。
data result (rename=(new_flag = flag));
set test;
if _n_ = 1 then
cont_flag = .;
prev_flag = lag(flag);
if prev_flag = -1 then
cont_flag = 0;
if flag = 1 then
cont_flag = .;
if cont_flag = 0 then
new_flag = 0;
else if flag = -1 or flag = 1 then
new_flag = flag;
retain cont_flag;
drop flag prev_flag cont_flag;
run;
您的問題不清楚。你可以發佈你想要的輸出嗎?你嘗試了什麼? – Tom
用所需的輸出更新了問題 –
那麼,您是否在組中的第一條記錄之後停止將缺失設置爲零?丟失在減號之前出現的值怎麼辦? – Tom