sas - 使用 SAS 逻辑计算 BMI
问题描述
对于许多患者,我有一个如下所示的数据集
Patient VisitDate Value Unit Type
A Jan12019 1 m Height
A Jan12019 50 kg Weight
A Jan52019 2 m Height
A Jan52019 55 kg Weight
我正在尝试添加 BMI 以获取这些患者的以下数据集:
Patient VisitDate Value Unit Type
A Jan12019 1 m Height
A Jan12019 50 kg Weight
A Jan52019 2 m Height
A Jan52019 55 kg Weight
A Jan52019 50/1^2 kg/m2 BMI
A Jan52019 55/2^2 kg/m2 BMI
我不太关心实际代码,但我试图理解在 SAS 中编程之外的逻辑。以下是我到目前为止在伪代码中的内容:
创建 BMI 数据集。对于每个访问日期的每位患者,值 = 体重/身高^2。类型 = BMI。单位 = 公斤/平方米。保留患者、就诊日期信息。
解决方案
根据逻辑,您试图从同一日期的两行体重和身高的患者中计算出 BMI。
因此,一种方法是使用 proc sql,您可以在其中根据相同的患者姓名和访问日期将主表与自身连接起来。
其次,您还可以根据“类型”或“单元”将主数据集分成两部分,然后进行合并。您要实现哪种逻辑取决于您。我的方法如下所示:
proc sql;
create table BMI
as
select a.Patient,
a.VisitDate,
b.value/(a.value*a.value) as value,
"kg/m2" as Unit,
"BMI" as Type
from have a
inner join have b
on a.patient=b.Patient
and a.visitdate=b.visitdate
and a.Type="Height"
and b.Type="Weight";
quit;
推荐阅读
- python - TensorFlow 中的 Pytorch“展开”等效项
- amazon-s3 - 如何对以下s3目录进行分区?
- variables - 变量 gitlab ci 中的变量
- html - asp 经典重置 REQUEST.COOKIES("user")
- google-sheets - 如何有条件地复制谷歌表格中的下拉菜单?
- mongodb - 如何在 Mongo 中插入/更新时将 $currentDate (ISODate) 转换为字符串格式
- r - 在数据框中使用现有变量名称创建一个新变量,在每个变量列表中匹配非 NA 值时填充它
- python - 有没有不同的方法来改变组合框的列表框属性?
- python - 添加分页符后如何删除不需要的额外空行?
- dart - 在变量上运行 ()