首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过间隔确定成功率?

如何通过间隔确定成功率?
EN

Stack Overflow用户
提问于 2022-01-06 17:36:14
回答 2查看 56关注 0票数 -1

我有这样的数据:项目状况.国家项目数量.间隔

是否有可能通过间隔来确定成功率?例如:我们正在添加成功的项目状态(count_n,其中的states=successful),并将其除以1-10区间之间的项目总数( count_n之和,区间为1-10)。对于间隔1-20我们也是这样做的。我想得到这样的数据:成功率区间X1-10Y 10-20

我正在用SAS编写代码,但我可以在其中使用Server。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-06 17:54:14

在PROC中,您可以这样做:

代码语言:javascript
复制
proc sql;
    create table want as
        select interval
             , sum( (upcase(state) = 'SUCCESSFUL')*count_n)/sum(count_n) format=percent8.1 as success_rate
        from have
        group by interval
    ;
quit;

代码(upcase(state) = 'SUCCESSFUL')生成一个1/0值,以便只对状态成功的行进行求和。乘以count_n,不成功状态为0,成功状态为count_n .这是一种快捷方式,可以防止您必须执行多个联接才能获得所需的分子。

示例代码:

代码语言:javascript
复制
data have;
    length state $20.;
    input state$ count_n interval$;
    datalines;
successful 70 1-10
successful 10 1-10
fail 20 1-10
successful 70 11-20
successful 5 11-20
fail 25 11-20
;
run;

输出:

代码语言:javascript
复制
interval    success_rate
1-10        80.0%
11-20       75.0%
票数 1
EN

Stack Overflow用户

发布于 2022-01-06 23:26:38

我更喜欢在可能的情况下使用预定义的SAS过程--它们通常更高效。

对于这样的事情,你可以使用PROC。您需要使用计数指定权重,以指示每个观察被多次计数,然后您可以得到各种百分比--在这种情况下,COL_PCT是每个类别。

删除WHERE/KEEP以查看完整的输出以及它为您生成的不同统计信息。这两种解决方案都不能解释缺少的值。如果需要,在PROC中添加缺少的选项。

代码语言:javascript
复制
proc freq data=have noprint;
table state*interval / out=want (keep = state interval count pct_col where=(state='successful')) missing outpct;
weight count_n;
run;

proc print data=want;
run;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70611221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档