我有一个患者数据的数据集,每个诊断都在不同的行上。

这是它的外观示例:

patientID diabetes cancer age gender
1         1          0     65    M
1         0          1     65    M
2         1          1     23    M
2         0          0     23    M
3         0          0     50    F
3         0          0     50    F

我需要隔离诊断为糖尿病和癌症的患者;他们唯一的患者标识符是患者 ID。有时它们在同一条线上,有时它们不在同一条线上。我不确定如何执行此操作,因为信息位于多行上。

我该怎么做呢?

这是我到目前为止:
PROC SQL;
create table want as
select patientID
       , max(diabetes) as diabetes
       , max(cancer) as cancer
       , min(DOB) as DOB
   from diab_dx

   group by patientID;
quit;

data final; set want;
if diabetes GE 1 AND cancer GE 1 THEN both = 1;
else both =0;

run;

proc freq data=final;
tables both;
run;

这样对吗?

最佳答案

如果您想了解数据步骤查找是如何工作的。

data pat;
   input patientID diabetes cancer age gender:$1.;
   cards;
1         1          0     65    M
1         0          1     65    M
2         1          1     23    M
2         0          0     23    M
3         0          0     50    F
3         0          0     50    F
;;;;
   run;
data both;
   do until(last.patientid);
      set pat; by patientid;
      _diabetes = max(diabetes,_diabetes);
      _cancer   = max(cancer,_cancer);
      end;
   both = _diabetes and _cancer;
   run;
proc print;
   run;

关于sas - 隔离具有 2 个诊断但诊断数据在不同线上的患者,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50591259/

10-12 17:33