我一直在努力让我的代码更高效,这是原始代码,但我认为它可以一步编写。
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 列,因为它刚刚被创建,但我想为每种类型创建一个总数的百分比。