如何修改以下代码告诉SAS如果趋势为UP或Down,那么保留数据集中的最后10个观察值?下面的代码只保留了特定的观察结果,但我也需要在此之前看到10个观察结果。谢谢!
Data want;
set have;
if TrendDown=1 and ck1=1 and ck2=1 then Trend='Down';
if TrendUp=1 and ck1=1 and ck2=1 then Trend='Up';
if Trend='Up' or Trend='Down';
run;
答案 0 :(得分:1)
以下代码执行您要求的内容,利用当前行号和POINT语句来读取前9行和当前行。我还要求它使用RETAIN语句将Trend变量的当前值设置为所有10行。希望这会有所帮助。
Data want;
set have;
if TrendDown=1 and ck1=1 and ck2=1 then Trend='Down';
if TrendUp=1 and ck1=1 and ck2=1 then Trend='Up';
if Trend in ('Up','Down') then do i = -9 to 0;
obnum = _n_+i;
set have point=obnum;
retain Trend;
drop i;
output;
end;
run;