Вычислить несколько процентов столбца

Рассмотрим следующую таблицу SAS:

data input;             
input Row$ Col1 Col2;       
datalines;              
A 10 20                    
B 20 20                   
C 20 20
;
run;

Я хотел бы рассчитать еще два столбца - «Col1_col_pct» и «Col2_col_pct», которые представляют собой проценты столбцов столбцов «Col1» и «Col2» соответственно, что приведет к следующей выходной таблице:

Row   Col1    Col2    Col1_col_pct    Col2_col_pct
A      10      20         20.00           33.33
B      20      20         40.00           33.33
C      20      20         40.00           33.33

Как я могу это сделать?


person user2568648    schedule 22.11.2014    source источник
comment
что ты уже испробовал? Это не сайт кода по запросу, но если у вас возникли проблемы с конкретным подходом, я уверен, что люди могут посоветовать.   -  person user667489    schedule 22.11.2014


Ответы (2)


PROC SQL также может это сделать, хотя это все еще вручную:

Proc sql;
    create table want as
    select *, 
    col1/sum(col1) as PCT_COL1 format=percent8.2,
    col2/sum(col2) as PCT_COL2 format=percent8.2
    from input;
quit;
person Reeza    schedule 22.11.2014

Используйте SUMMARY, чтобы вычислить сумму каждого столбца, а затем снова соединить ее с оригиналом. Тогда посчитайте проценты.

data input;             
input Row$ Col1 Col2;       
datalines;              
A 10 20                    
B 20 20                   
C 20 20
;
run;

proc summary data=input;
var col1 col2;
output out=sum(drop=_type_ _freq_) sum= /autoname;
run;

data want(drop=col1_sum col2_sum);
set input;
if _n_ = 1 then
    set sum;

Col1_pct = col1 / col1_sum;
col2_pct = col2 / col2_sum;
run;
person DomPazz    schedule 22.11.2014