1

私は proc 手段を使用して、ビジネス ラインごとの支払いのシェアを計算しています。データは次のようになります。

data Test;
input ID Business_Line Payment2017;
Datalines;
1 1 1000
2 1 2000
3 1 3000
4 1 4000
5 2 500
6 2 1500
7 2 3000
;
run;

グループ (business_line) ごとに支払いのパーセンテージ シェア (重量) を計算する追加の列を計算しようとしています。

   data Test;
input ID Business_Line Payment2017 share;
Datalines;
1 1 1000 0.1
2 1 2000 0.2
3 1 3000 0.3
4 1 4000 0.4
5 2 500 0.1
6 2 1500 0.3
7 2 3000 0.6
;
run;

私がこれまでに使用したコード:

proc means data = test noprint;
class ID;
by business_line;
var Payment2017;
output out=test2 
sum = share;
weight = payment2017/share;
run;

私も試してみました

proc means data = test noprint;
class ID;
by business_line;
var Payment2017 /weight = payment2017;
output out=test3 ;
run;

助けに感謝します。

4

2 に答える 2

1

proc sql を使用すると便利です。

proc sql;
   select *, payment2017/sum(payment2017) as share from test group by business_line;
quit;

データステップ:

data have;
    do until (last.business_line);
    set test;
    by business_line notsorted;
    total+payment2017;
    end;
    do until (last.business_line);
    set test;
    by business_line notsorted;
    share=payment2017/total;
    output;
    end;
    call missing(total);
    drop total;
run;
于 2018-03-29T13:35:11.027 に答える