我有患者信息的数据集,我想算很多患者(观察)如何有一个给定的诊断代码。 我有9个可能的变量,它可以在diag1,则DIAG2 ... diag9。 该代码是V271。 我无法弄清楚如何使用“WHERE”条款或PROC频率做到这一点。
任何帮助,将不胜感激!!
我有患者信息的数据集,我想算很多患者(观察)如何有一个给定的诊断代码。 我有9个可能的变量,它可以在diag1,则DIAG2 ... diag9。 该代码是V271。 我无法弄清楚如何使用“WHERE”条款或PROC频率做到这一点。
任何帮助,将不胜感激!!
你的基本策略是创建一个数据集,是不是病人的水平,但一个现象是一个与患者的诊断代码(所以每位患者多达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频率。 你也可以从不缺变化的标准if diag[_i] = 'V271' then do;
只得到V271s中的数据。
重塑,可以匹配乔的方法的数据的另一种方法是使用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;