1

PROC REPORT に計算変数を含めることができないようです。計算された変数が見出し列の場合は正常に機能しますが、ACROSS グループの一部を形成する場合は機能しません。列を直接参照できるようになっただけで、両方ではなく、1 つの ACROSS グループの結果しか得られません。

data have1;
   input username $  betdate : datetime. stake winnings winner;
   dateOnly = datepart(betdate) ;
   format betdate DATETIME.;
   format dateOnly ddmmyy8.;
   datalines; 
    player1 12NOV2008:12:04:01 90 -90 0
    player1 04NOV2008:09:03:44 100 40 1
    player2 07NOV2008:14:03:33 120 -120 0
    player1 05NOV2008:09:00:00 50 15 1
    player1 05NOV2008:09:05:00 30 5 1
    player1 05NOV2008:09:00:05 20 10 1
    player2 09NOV2008:10:05:10 10 -10 0
    player2 09NOV2008:10:05:40 15 -15 0
    player2 09NOV2008:10:05:45 15 -15 0
    player2 09NOV2008:10:05:45 15 45 1
    player2 15NOV2008:15:05:33 35 -35 0
    player1 15NOV2008:15:05:33 35 15 1
    player1 15NOV2008:15:05:33 35 15 1
run;

PROC PRINT; RUN;

Proc rank data=have1 ties=mean out=ranksout1 groups=2;
     var    stake winner;
     ranks  stakeRank winnerRank;
run;

PROC REPORT DATA=ranksout1 NOWINDOWS out=report;
    COLUMN stakerank winnerrank, (N stake=stakemean discountedstake);
    DEFINE stakerank / GROUP '' ORDER=INTERNAL;
    DEFINE winnerrank / ACROSS '' ORDER=INTERNAL;
    DEFINE stake / analysis sum noprint;
    DEFINE stakemean / analysis sum;
    DEFINE discountedstake / computed format=8.2 'discountedstake';
    COMPUTE discountedstake;
        _C4_ = _C3_ -1;
    ENDCOMP;
RUN;

グループ全体に接続された変数を計算する方法がわかりません。これは、列 ' C4 ' の 'discountedstake' の値を計算するだけであり、列 7 で再度計算しても意味がありません。

その計算された変数の値を各グループに含めるにはどうすればよいですか?

4

1 に答える 1

1
PROC REPORT DATA=ranksout1 NOWINDOWS out=report;
    COLUMN stakerank winnerrank, (N stake=stakemean discountedstake);
    DEFINE stakerank / GROUP '' ORDER=INTERNAL;
    DEFINE winnerrank / ACROSS '' ORDER=INTERNAL;
    DEFINE stake / analysis sum noprint;
    DEFINE stakemean / analysis sum;
    DEFINE discountedstake / computed format=8.2 'discountedstake';
    COMPUTE discountedstake;
    _C4_ = _C3_ -1;
    _C7_ = _C6_ -1;
    ENDCOMP;
RUN;

計算する各列に言及するだけです。配列が多数ある場合は、配列を使用してこれを行うか、事前にデータ ステップ/ビューで行うことができます。

于 2013-09-13T13:59:22.450 に答える