如果你想-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