私は自分のコードをより効率的にしようとしてきました。これは元のコードですが、1 つのステップで記述できると思います。
data TABLE;set ORIGINAL_DATA;
Multi=percent*total_units;
keep Multi Type;
proc sort; by Type;
proc means noprint data=TABLE1; by Type; var Multi;output out=Table2(drop= _type_ _freq_)sum=Multi;run;
proc means noprint data=Table1; var Multi;output out=Table3(drop= _type_ _freq_) sum=total ;run;
proc sql;
create table TABLE4as
select a.Type, a.Multi label="Multi", b.total label="total"
from TABLE2 a, TABLE3 b
order by Type;
quit;
data TABLE5;set TABLE4;
pct=(MULTI/total)*100;
run;
一部を分割することはできますが、コードで PCT 部分を取得する方法がわかりません。これは私が持っているものです。
proc sql;
create table TABLE1 as
select distinct type, sum(percent*total_units) as MULTI label "MULTI",
MULTI/(percent*total_units)) as PCT
from ORIGINAL_DATA
group by type;
quit;
コードの一部を編集する必要がありましたが、一般的な考え方は理にかなっていると思います。主な問題は、MULTI 列が作成されたばかりであるため呼び出すことができないことですが、各タイプの合計のパーセンテージを作成したいと考えています。