如何在SAS中插入与另一行相关的行

时间:2016-07-15 00:30:46

标签: sas

我有一个包含多个不同群组的表格,我计算每个群组后的总数,并且我希望在每个总行之前和之后插入一个空白行。

有没有办法设置与之相关的if then语句:

如果名称=' TOTAL'然后  

之前和之后插入blah blah blah

我对SAS很陌生,但我看到的所有其他问题都与在固定点(通常是开头/结尾)插入行有关,而不是与特定的其他行相关

1 个答案:

答案 0 :(得分:3)

正如评论中所提到的,使用proc报告来做这类事情可能会更好。但只是为了它,无论如何这里是一个解决方案!

这里我们使用降序排序方法,但是在总计之前插入空行的替代方法是使用临时变量来存储行上的每个值,然后执行call missing在所有内容上,然后是output,然后从临时变量中获取值并执行另一个输出。)

data have;
  informat id 3. rowType $12. number 3.;
  input id rowType number;
  datalines;
1 value 111
1 value 222
1 total 333
2 value 000
2 value 999
3 total 999
;

data tmp;
  set have;
  rownum + 1;
  if rowType = "total" then do;
    output;
    call missing(id, rowType, number);
    rownum + 1;
    output;
  end;
  else output;
run;

proc sort data=tmp out=tmp(drop=rownum);
  by descending rownum;
run;

data tmp2;
  set tmp;
  rownum + 1;
  if rowType = "total" then do;
    output;
    call missing(id, rowType, number);
    rownum + 1;
    output;
  end;
  else output;
run;

proc sort data=tmp2 out=want(drop=rownum);
  by descending rownum;
run;

Resulting table