PROC REPORT 中计算的“跨"变量 [英] Calculated 'Across' Variable in PROC REPORT

查看:11
本文介绍了PROC REPORT 中计算的“跨"变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用别名为 PROC REPORT 中的同一变量创建多个统计信息.这是对我之前发表的一篇文章的详细说明,但由于示例数据已更改且问题涉及更多,因此将其作为单独的问题发布.

I'm trying to use a alias to create multiple statistics for the same variable in PROC REPORT. This is an elaboration on a previous post I put up, but am posting it as a separate question because the sample data has changed and the question is a bit more involved.

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 来做到这一点.

The output provided by tabulate above is what I want, although I will ultimately be adding some more calculated fields so would like to do this with 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;

当我开始使用逗号和方括号对变量ACROSS"进行分组时,我似乎根本无法插入计算变量.如果我只在stakerank 上分组一次,它就可以工作,但如果我引入winnerrank 分组,它就行不通.我收到错误消息,告诉我生成了缺失值",并且stakemean 未初始化".

When I start grouping the variables 'ACROSS' using commas and brackets, I can't seem to insert a calculated variable at all. It works if I only GROUP once on stakerank, but if I introduce the winnerrank grouping, it doesn't work. I get errors telling me that 'missing values were generated', and that 'stakemean is uninitialized'.

非常感谢任何提示.谢谢.

Would appreciate any tips at all. Thanks.

推荐答案

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

Maybe this helps: preparing calculated variable in SAS view on detail data:

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; - MEAN 表示结果是 discountedstake 的平均值.

In DEFINE discountedstake / ANALYSIS MEAN format=8.2; - MEAN says the result is average of discountedstake.

这篇关于PROC REPORT 中计算的“跨"变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆