SAS转置和汇总条目

SAS转置和汇总条目,sas,Sas,我有一个数据集,它具有按时间和类型划分的quantitave值。我希望以不同的方式总结这些内容,这样我就可以看到时间对类型的百分比分解。以下是数据集: data have; input loc $ prod $ time $ type $ total; cards; L1 P1 1 xxx 10 L1 P1 1 yyy 30 L1 P1 1 yyy 60 L1 P2 1 xxx 20 L1 P1 2 xxx 25 L1 P2 2 yyy 60 ; run; 我想以这样的方式结束

我有一个数据集,它具有按时间和类型划分的quantitave值。我希望以不同的方式总结这些内容,这样我就可以看到时间对类型的百分比分解。以下是数据集:

    data have;
    input loc $ prod $ time $ type $ total;
cards;
L1 P1 1 xxx 10
L1 P1 1 yyy 30
L1 P1 1 yyy 60
L1 P2 1 xxx 20
L1 P1 2 xxx 25
L1 P2 2 yyy 60
;
run;
我想以这样的方式结束:

loc   prod    type  time1 time2 
L1    P1      xxx   .1    1       
L1    P1      yyy   .9    0       
L1    P2      xxx   1     0
L1    P2      yyy   0     1        
我想这将需要某种类型的数组,但我很难找到正确的语法。我还认为proc报告可能有效,但不确定。我需要的输出是一个数据集

谢谢你的帮助


派尔

我会把它放在一个我认为是你想要的答案中

proc sort data=have;
by loc prod;
run;

proc freq data=have noprint;
by loc prod;
tables time*type /out=statout outpct;
weight total;
run;

proc sort data=statout;
by loc prod type;
run;

proc tranpose data=statout out=statout2;
by loc prod type;
id time;
var pct_row;
run;

您可以使用proc freq获取百分比。类似于:proc freq data=have;通过loc prod;tables time*type/out=statoutct(我想您需要行百分比);总重量;跑然后您可以通过loc和prod以及type变量转换statout,时间变量作为id变量,百分比变量作为var变量。我想这就是你想要的。谢谢!此解决方案适用于我提供的示例,但不适用于我的实际数据。我不知道为什么,但后来我意识到这是因为我的一种“类型”总是有负值。有没有关于修改此解决方案以处理这些问题并创建负百分比的想法?谢谢。类型被定义为字符,所以你可以有-XXX和SAS不在乎。它只会认为这是另一个类别。所以它会认为XXX是一种类型,-XXX是另一种类型。百分比是整体的百分比,所以我不认为它们是负的。