2016-07-15 2 views
0

각 그룹 다음에 합계를 계산하는 여러 그룹이있는 테이블이 있으며 각 행의 앞뒤에 빈 행을 삽입하고 싶습니다. 총 행.다른 행과 관련하여 SAS에 행을 삽입하는 방법

같은과의 관계에있는 경우 다음 문을 설정할 수있는 방법이 있나요 : 이름 = '총'은 다음 삽입 ㅋ ㅋ ㅋ ㅋ ㅋ ㅋ 전

후 나는 꽤 새로운 해요 경우

가 SAS는하지만 다른 모든 질문은 고정 된 점 (일반적으로 시작/끝)에 행을 삽입하는 것과 관련이 있으며 다른 특정 행과 관련이 없습니다.

+4

는 더 실제 데이터 세트에서 갖고 싶어 것보다 보고서처럼 소리. 'PROC REPORT'를 사용해 보셨습니까? 또는 'SUM' 문으로 단지'PROC PRINT' 만 가져라. – Tom

+0

@Tom에 동의합니다 ... SAS 절차를 사용하여 'TOTAL'행을 얻었습니까? –

+0

SAS BI를 사용하고 있습니다. 불행히도 그렇지 않습니다. PROC REPORT가 훨씬 더 좋을 것입니다. –

답변

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

감사합니다. –

관련 문제