如何在SAS中实现两个数值列相除并生成新计算列
SAS中两列相除生成再入院率字段的实现方法
基础实现(DATA步方式)
直接在数据步中通过赋值语句完成计算,是SAS里最常用的新建计算字段的方式,核心代码如下:
/* 替换成你自己的输入、输出数据集名称即可 */ data result_data; set source_data; /* 执行两列除法,生成新字段readmission_rate */ readmission_rate = readmission / total_admission; run;
常见优化处理
- 除零/缺失值兼容:如果分母
total_admission存在0值、缺失值,直接运算会返回缺失值,可通过条件判断自定义这类场景的返回值:
data result_data; set source_data; if total_admission > 0 then do; readmission_rate = readmission / total_admission; end; else do; /* 分母无效时可根据业务需求设为0、或者保留缺失值. */ readmission_rate = .; end; run;
- 百分比格式展示:如果需要让结果直接以百分比形式显示,可以给字段绑定百分比格式,无需额外做乘100的计算:
data result_data; set source_data; readmission_rate = readmission / total_admission; /* 格式含义:总长度8位,保留2位小数的百分比格式 */ format readmission_rate percent8.2; run;
SQL语法实现
如果你习惯用SQL处理数据,也可以通过PROC SQL完成同样的计算:
proc sql; create table result_data as select *, readmission / total_admission as readmission_rate format=percent8.2 from source_data; quit;
注意:不建议直接在原始数据集上覆盖写计算结果,避免原始数据被误修改无法恢复。
内容的提问来源于stack exchange,提问作者Ahmed
相关产品推荐
相关产品推荐

