2016-07-15 34 views
0

我有一个表有几个不同的组,我计算每个组后面的总数,我想在每个组之前和之后插入一个空行总排。如何在SAS中插入一行相对于另一行

有没有办法建立在关系的,如果再语句是这样的:

如果name =“总”,然后 插入等等等等等等之前和

后,我是很新, SAS,但我看到的所有其他问题涉及在固定点插入行(通常是开始/结束)而不是与特定其他行有关

+4

听起来更像是一个比你想在一个实际的数据集什么的报告。您是否在尝试使用“PROC REPORT”?甚至可以用'SUM'语句来执行'PROC PRINT'。 – Tom

+0

我同意@Tom ...你是否使用SAS程序得到了'TOTAL'行? –

+0

我正在使用SAS BI报告,不幸的是,否则是PROC报告会好很多 –

回答

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

+0

这很好,谢谢! –

相关问题