如何用Proc Tabulate或其他PROC计算Drug3指定剂量占总和的百分比?
可以通过SAS的Proc Tabulate或Proc SQL实现该计算
以下是两种具体的实现方案,假设你的原始数据集名为drug_data,包含变量:Drug(药物名称)、Dose(剂量)、Value(对应数值)。
方法一:使用Proc Tabulate直接生成带占比的表格
Proc Tabulate支持自定义百分比计算,通过指定分组范围来限定分母为目标剂量的总和:
proc tabulate data=drug_data format=percent8.1; class Drug Dose; var Value; table Drug=' ', Dose=' '*Value=' '*[sum='数值' pctsum<Drug='Drug3' Dose in ('0.75','1.5')>='占比'] / box='药物'; where Drug='Drug3' and Dose in ('0.75','1.5'); run;
pctsum<...>参数指定了计算占比的分组范围,分母自动取该范围内的Value总和percent8.1格式确保输出带一位小数的百分比,若需要整数百分比可改为percent8.0
方法二:使用Proc SQL计算并存储结果
如果需要将计算结果保存为数据集,Proc SQL的方式更灵活:
proc sql; create table drug3_percent as select Drug, Dose, Value, round(Value / total_sum * 100, 1) as Percentage format=8.0 from drug_data, (select sum(Value) as total_sum from drug_data where Drug='Drug3' and Dose in ('0.75','1.5')) where Drug='Drug3' and Dose in ('0.75','1.5'); quit; proc print data=drug3_percent title='Drug3各剂量占比结果'; run;
- 子查询先计算出Drug3两个目标剂量的数值总和
total_sum - 主查询通过除法计算单个剂量的占比,
round函数用于将结果取整到整数位,和你示例中的38%、61%匹配
内容的提问来源于stack exchange,提问作者NewUsr_stat
相关产品推荐
相关产品推荐

