多个变量的值的频率?

时间:2015-02-10 19:12:51

标签: sas frequency

我有一份患者信息数据集,我想计算有多少患者(观察)有一个给定的诊断代码。在diag1中,我有9个可能的变量,diag2 ... diag9。代码是V271。我无法弄清楚如何使用" WHERE"子句或proc频率。

任何帮助都将不胜感激!!

2 个答案:

答案 0 :(得分:2)

您的基本策略是创建一个非患者水平的数据集,但一个观察结果是一个患者诊断代码(每位患者最多9个观察结果)。像这样:

data want;
  set have;
  array diag[9];
  do _i = 1 to dim(diag);
    if not missing(diag[_i]) then do;
      diagnosis_Code = diag[_i];
      output;
    end;
  end;
  keep diagnosis_code patient_id [other variables you might want];
run;

然后,您可以在结果数据集上运行proc freq。您还可以将标准从不丢失更改为if diag[_i] = 'V271' then do;,以便仅获取数据中的V271。

答案 1 :(得分:1)

重塑可以匹配Joe方法的数据的另一种方法是使用proc transpose,如此。

proc transpose data=have out=want(keep=patient_id col1
                                  rename=(col1=diag)
                                  where=(diag is not missing));
  by patient_id;
  var diag1-diag9;
run;