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

是否有可能通过间隔来确定成功率?例如:我们正在添加成功的项目状态(count_n,其中的states=successful),并将其除以1-10区间之间的项目总数( count_n之和,区间为1-10)。对于间隔1-20我们也是这样做的。我想得到这样的数据:成功率区间X1-10Y 10-20
我正在用SAS编写代码,但我可以在其中使用Server。谢谢。
发布于 2022-01-06 17:54:14
在PROC中,您可以这样做:
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 .这是一种快捷方式,可以防止您必须执行多个联接才能获得所需的分子。
示例代码:
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;输出:
interval success_rate
1-10 80.0%
11-20 75.0%发布于 2022-01-06 23:26:38
我更喜欢在可能的情况下使用预定义的SAS过程--它们通常更高效。
对于这样的事情,你可以使用PROC。您需要使用计数指定权重,以指示每个观察被多次计数,然后您可以得到各种百分比--在这种情况下,COL_PCT是每个类别。
删除WHERE/KEEP以查看完整的输出以及它为您生成的不同统计信息。这两种解决方案都不能解释缺少的值。如果需要,在PROC中添加缺少的选项。
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;https://stackoverflow.com/questions/70611221
复制相似问题