0

PROC REPORT 出力があり、セルの値が 1.96 未満であることに基づいてアスタリスクを追加したいと考えています。色は必要ありません。数字の後にアスタリスクを付けるだけです。これはフォーマットで行うことができますか、それとも COMPUTE ブロックに 'IF/ELSE' 句が必要ですか?

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 sql;
create table withCubedDeviations as
    select *,
    ((stake - (select avg(stake) from ranksout1 where stakeRank = main.stakeRank and  winnerRank = main.winnerRank))/(select std(stake) from ranksout1 where stakeRank = main.stakeRank and  winnerRank = main.winnerRank)) **3 format=8.2 as cubeddeviations
    from ranksout1 main;    
quit;

PROC REPORT DATA=withCubedDeviations NOWINDOWS out=report;
    COLUMN stakerank winnerrank, ( N stake=avg cubeddeviations skewness);
    DEFINE stakerank / GROUP  ORDER=INTERNAL '';
    DEFINE winnerrank / ACROSS  ORDER=INTERNAL '';
    DEFINE cubeddeviations / analysis 'SumCD' noprint;
    DEFINE N / 'Bettors';
    DEFINE avg / analysis mean 'Avg' format=8.2;
    DEFINE skewness / computed format=8.2 'Skewness';
    COMPUTE skewness;
        _C5_ =  _C4_ * (_C2_ / ((_C2_ -1) * (_C2_ - 2)));
        _C9_ =  _C8_ * (_C6_ / ((_C6_ -1) * (_C6_ - 2)));
    ENDCOMP;
RUN;

これは単なる例であるため、統計的な意味はありませんが、SKEWNESS の値が 1 より大きい場合はアスタリスクを 1 つ、5 より大きい場合はアスタリスクを 2 つ、値が 10 より大きい場合はアスタリスクを 3 つ付ける必要があります。 . また、アスタリスクを上付き文字にすることができれば、さらに良いでしょう。

私は以下をテストしてきましたが、役に立ちませんでした:

PROC FORMAT; 
    picture onestar . = " " low - high = "9.9999^{super *}";*^{super***};
    picture twostar . = " " low - high = "9.9999^{super **}";*^{super***};
    picture threestar . = " " low - high = "9.9999^{super ***}";*^{super***};
run;

PROC REPORT DATA=withCubedDeviations NOWINDOWS out=report;
    COLUMN stakerank winnerrank, ( N stake=avg cubeddeviations);
    DEFINE stakerank / GROUP  ORDER=INTERNAL '';
    DEFINE winnerrank / ACROSS  ORDER=INTERNAL '';
    DEFINE cubeddeviations / analysis 'SumCD' noprint;
    DEFINE N / 'Bettors';
    DEFINE avg / mean 'Avg' format=8.2;
    compute avg;
        if _C3_ > 1.96 then call define('_C3_','format','onestar.');
    endcomp;
RUN;

助けてくれてありがとう。

4

1 に答える 1

1

私はこれがあなたが必要とすることをすると思います:

proc format;
picture skewaskf
-1 <-<0 = '00009.99' (mult=100 prefix='-')
0-<1 = '00009.99' (mult=100) 
1-<5 = '00009.99*'(mult=100)
5-<10= '00009.99**'(mult=100)
10-high='00009.99***'(mult=100);
quit;

ネガをさらに拡張します。

于 2013-09-15T18:05:22.497 に答える