在PROC报告计算出的“穿越”变量(Calculated 'Across' Vari

2019-10-18 15:26发布

我试图用一个别名为PROC REPORT相同的变量创建多个统计数据。 这是在以前的文章中,我提出了一个阐述,但我张贴作为一个单独的问题,因为样本数据已经改变,这个问题是一个比较复杂。

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 TABULATE DATA=ranksout1 NOSEPS;
    VAR stake;
    class stakerank winnerrank;
    TABLE stakerank = '', winnerrank=''*stake=''*(N Mean Skewness);
RUN;

通过以上的平板状提供的输出就是我想要的,但我最终会加入一些更多的计算字段所以想用PROC REPORT做到这一点。

PROC REPORT DATA=ranksout1 NOWINDOWS;
    COLUMN stakerank winnerrank, (N stake=stakemean discountedstake);
    DEFINE stakerank / GROUP '' ORDER=INTERNAL;
    DEFINE winnerrank / ACROSS '' ORDER=INTERNAL;
    DEFINE stake / ANALYSIS N 'Count';
    DEFINE stakemean / ANALYSIS MEAN 'Mean' format=8.2;
    DEFINE discountedstake / computed format=8.2;
    COMPUTE discountedstake;
        discountedstake = stakemean * 0.9;
    ENDCOMP;
RUN;

当我开始分组变量“整个”使用逗号和括号,我似乎无法在所有插入计算的变量。 如果我只上一次stakerank GROUP,但如果我介绍winnerrank分组,这是行不通的它的工作原理。 我得到的错误告诉我,“生成缺失值”,而这stakemean未初始化“。

将在所有感激的任何提示。 谢谢。

Answer 1:

也许这可以帮助:在详细数据SAS视图准备计算的变量:

data ranks_view / view=ranks_view;
set ranksout1;
    discountedstake = stake * 0.9;
run;

PROC REPORT DATA=ranks_view NOWINDOWS;
    COLUMN stakerank winnerrank, (N stake=stakemean discountedstake);
    DEFINE stakerank / GROUP '' ORDER=INTERNAL;
    DEFINE winnerrank / ACROSS '' ORDER=INTERNAL;
    DEFINE stake / ANALYSIS N 'Count';
    DEFINE stakemean / ANALYSIS MEAN 'Mean' format=8.2;
    DEFINE discountedstake / ANALYSIS MEAN format=8.2;
RUN;

DEFINE discountedstake / ANALYSIS MEAN format=8.2; - 平均说,结果是平均discountedstake的。



文章来源: Calculated 'Across' Variable in PROC REPORT
标签: sas