对于许多患者,我都有一个类似于以下内容的数据集
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。单位= kg / m2。保留患者的VisitDate信息。
答案 0 :(得分:1)
根据逻辑,您试图从体重和身高在同一天的两行患者获得的BMI进行计算。
所以一种方法是使用proc sql,在这里您可以根据相同的患者姓名和visitdate ..
第二,您还可以基于“类型”或“单元”将主数据集分为两个,然后进行合并..取决于您要实现的逻辑。我的方法如下:
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;