2017-08-15 76 views
-1

跟进到 SAS - transpose multiple variables in rows to columns设置名称idgroup

我有以下代码:

data have; 
input CX_ID 1. TYPE $1. COUNT_RATE 1. SUM_RATE 2.; 
datalines; 
1A110 
1B220 
2A120 
    ; 
run; 


    proc summary data = have nway; 
     class cx_id; 
     output out=want (drop = _:) 
     idgroup(out[2] (count_rate sum_rate)= count sum); 
    run; 

所以这个表:

CX_ID TYPE COUNT_RATE SUM_RATE 
    1  A  1  10 
    1  B  2  20 
    2  A  1  20 

成为

CX_ID COUNT_1 COUNT_2 SUM_1 SUM_2 
1  1  2  10  20 
2  1  .  20  . 

瓦ich是完美的,但我如何设置名称为

Count_A Count_B Sum_A Sum_B 

或者一般情况下,无论在有表的类型字段值?

谢谢

+0

如果您将类从CX_ID更改为您的类型,会发生什么?或者在CLASS语句中? – Reeza

+0

您发布的代码无效。 – Reeza

+0

我需要Cx_ID的最终表格。这个想法是通过Cx_ID按类型在一行中计算产品代码和费率总和。 – Ben

回答

1

双PROC TRANSPOSE是动态的,您可以添加数据步骤来轻松定制名称。

*sample data; 

data have; 
    input CX_ID 1. TYPE $1. COUNT 1. SUM 2.; 
    datalines; 
1A110 
1B220 
2A120 
    ; 
run; 

*transpose to long; 

proc transpose data=have out=long; 
    by cx_id type; 
run; 

*transpose to wide; 

proc transpose data=long out=wide; 
    by cx_id; 
    var col1; 
    id _name_ type; 
run;