如果满足if条件,如何仅保留SAS中的最后10个观察值?

时间:2014-08-15 22:18:45

标签: sas

如何修改以下代码告诉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;

1 个答案:

答案 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;