转置数据并更改变量名称

时间:2013-11-19 11:47:38

标签: sas

我希望将以下数据转换为适当的格式,以执行两个独立的样本t检验。

    data delete;
       input betdate : datetime. stake1 stake2;
       format betdate DATETIME.;
       datalines; 
        12NOV2008:12:04:01 10 15
        04NOV2008:09:03:44 20 25
        07NOV2008:07:03:33 1 2
        05NOV2008:09:00:00 0.5  0.75
        05NOV2008:09:05:00 1 2
        07NOV2008:14:03:33 1 2
        05NOV2008:09:00:05 20 40
        07NOV2008:16:03:33 1 2
        07NOV2008:18:03:33 1 3
        09NOV2008:10:05:10 0.7 0.1
        15NOV2008:15:05:33 10 3
        15NOV2008:15:05:33 1 0.1
        15NOV2008:15:05:33 0.1 0.01
    run;
    PROC PRINT; RUN;

如何将其转置为以下结构? SAS不允许我调用新变量'1'和'2'?

    data delete;
       input betdate : datetime. stakeNumberFlag stake;
       format betdate DATETIME.;
       datalines; 
        12NOV2008:12:04:01 1 10
        12NOV2008:12:04:01 2 15
        04NOV2008:09:03:44 1 20
        04NOV2008:09:03:44 2 25
        07NOV2008:07:03:33 1 1
        07NOV2008:07:03:33 2 2
        05NOV2008:09:00:00 1 0.5
        05NOV2008:09:00:00 2 0.75
        05NOV2008:09:05:00 1 1
        05NOV2008:09:05:00 2 2
        07NOV2008:14:03:33 1 1
        07NOV2008:14:03:33 2 2
        05NOV2008:09:00:05 1 20
        05NOV2008:09:00:05 2 40
        07NOV2008:16:03:33 1 1
        07NOV2008:16:03:33 2 2
        07NOV2008:18:03:33 1 1
        07NOV2008:18:03:33 2 3
        09NOV2008:10:05:10 1 0.7
        09NOV2008:10:05:10 2 0.1
        15NOV2008:15:05:33 1 10
        15NOV2008:15:05:33 2 3
        15NOV2008:15:05:33 1 1
        15NOV2008:15:05:33 2 0.1
        15NOV2008:15:05:33 1 0.1
        15NOV2008:15:05:33 2 0.01
    run;
    PROC PRINT; RUN;

我这样做但是没有用:

proc sort data=tableOutput; by betdate; run;
proc transpose data=tableOutput out=tableOutput;
var 1 2;
by betdate;
run;

1 个答案:

答案 0 :(得分:1)

data transposed_view / view=transposed_view;
    length betdate 8 stakeNumberFlag 3 stake 8;
    set
        delete (drop=stake2 rename=(stake1=stake) in=s1 ) 
        delete (drop=stake1 rename=(stake2=stake))
    ;
    if s1 then stakeNumberFlag= 1;
    else stakeNumberFlag= 2;
run;

proc sort data=transposed_view out=transposed;
    by betdate stakeNumberFlag;
run;