使用SAS逻辑计算BMI

时间:2019-05-02 21:05:52

标签: sas

对于许多患者,我都有一个类似于以下内容的数据集

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信息。

1 个答案:

答案 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;