跨多个变量的值的频率?
Frequency of a value across multiple variables?
我有一个患者信息数据集,我想计算有多少患者(观察)具有给定的诊断代码。我有 9 个可能的变量,在 diag1、diag2...diag9 中。代码是 V271。我不知道如何使用 "WHERE" 子句或 proc freq.
任何帮助将不胜感激!!
你的基本策略是创建一个非患者级别的数据集,但一个观察是一个患者诊断代码(因此每个患者最多 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。
重塑可以匹配 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;
我有一个患者信息数据集,我想计算有多少患者(观察)具有给定的诊断代码。我有 9 个可能的变量,在 diag1、diag2...diag9 中。代码是 V271。我不知道如何使用 "WHERE" 子句或 proc freq.
任何帮助将不胜感激!!
你的基本策略是创建一个非患者级别的数据集,但一个观察是一个患者诊断代码(因此每个患者最多 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。
重塑可以匹配 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;