2016-03-02 34 views
0

我有一個數據集,其中包含由ID標識的同一列中的節和子節,並且我需要將它放在不同的結構中,一份報告。 如果我不這樣做,proc報告會生成重複的信息。 我試着保留選項來保留每一個的最後一個小節,但結果並不是預期的。具有ID的同一列中的節和子節點,如何更改結構

這裏我的數據集,我已經和我的數據集,我想和我想

報告有:

data have; 
infile datalines 
delimiter=',' 
dsd; 
Input ID $ Concept : $15. Amount 15.; 
datalines; 
1,Store1,85.5 
1.1,vend1,43 
1.1.1,income,25 
1.1.1.1,income 1,10 
1.1.1.2,income 2,5 
1.1.1.3,income 3,10 
1.1.2,Sales,18 
1.1.2.1,Sales 1,12 
1.1.2.2,Sales 2,6 
1.2,Vend2,42.5 
1.2.1,income,2.5 
1.2.1.1,Comission 1,2.5 
1.2.2,Sales,40 
1.2.2.1,Sale 1,15 
1.2.2.2,Sale 2,15 
1.2.2.3,Sale 3,10 
2,Store 2,75.6 
2.1,Vend 1,18.3 
2.1.1,income,15 
2.1.1.1,income 1,7 
2.1.1.2,income 2,8 
2.1.2,Sales,3.3 
2.1.2.1,Sales 1,3.3 
2.2,Vend 2,57.3 
2.2.1,income,7.3 
2.2.1.1,Comission 1,5 
2.2.1.2,Comission 2,2.3 
2.2.2,Sales,0 
2.2.3,Others,50 
; 
run; 

旺旺:

data want; 
infile datalines 
delimiter=',' 
dsd; 
input store $ Vend $ Type_1 : $15. Type_2 : $15. Amount 15.; 
datalines; 
Store 1,vend1,income,income 1,10 
Store 1,vend1,income,income 2,5 
Store 1,vend1,income,income 3,10 
Store 1,vend1,Sales,Sales 1,12 
Store 1,vend1,Sales,Sales 2,6 
Store 1,Vend2,income,Comission 1,2.5 
Store 1,Vend2,Sales,Sale 1,15 
Store 1,Vend2,Sales,Sale 2,15 
Store 1,Vend2,Sales,Sale 3,10 
Store 2,Vend 1,income,income 1,7 
Store 2,Vend 1,income,income 2,8 
Store 2,Vend 1,Sales,Sales 1,3.3 
Store 2,Vend 2,income,Comission 1,5 
Store 2,Vend 2,income,Comission 2,2.3 
Store 2,Vend 2,Sales,Sales,0 
Store 2,Vend 2,Others ,Others ,50 
; 
run; 

最終報告:

PROC REPORT DATA=want nowindows SPANROWS missing 
style(report)=[rules=GROUPS frame=box]; 
column 
store Vend Type_1 Type_2 (Amount); 
define store/group order=data; 
define Vend/group order=data; 
define Type_1/group order=data; 
define Type_2/group order=data; 
define Amount /analysis SUM format=dollar15.2; 
rbreak after/summarize; 
run; 

謝謝。

回答

0
data want; 
    length store $7. Vend $6. Type_1 $15. Type_2 $15. Amount 8.; 
    set have; 
    length_id = length(ID); 
    retain store Vend Type_1; 
    if length_id = 1 then store = concept; 
    if length_id = 3 then Vend = concept; 
    if length_id = 5 then Type_1 = concept; 
    if length_id = 7 then Type_2 = concept; 
    if length_id = 7 or Amount = 0 or concept = 'Others'; 
    if Amount = 0 or concept = 'Others' then Type_2 = concept; 
    drop ID concept length_id; 
run; 
相關問題