我拥有数百万患者遭遇的大型数据集,其中包括诊断,时间戳,患者ID和人口统计信息。
我们发现特定类型的疾病经常与共同病症共存。
我想计算每位患者患此病的次数,然后创建一个直方图,显示有多少人患有1,2,3,4等疾病。
这是数据的格式。
PatientID Diagnosis Date Gender Age
1 282.1 1/2/10 F 25
1 282.1 1/2/10 F 87
1 232.1 1/2/10 F 87
1 250.02 1/2/10 F 41
1 125.1 1/2/10 F 46
1 90.1 1/2/10 F 58
2 140 12/15/13 M 57
2 282.1 12/15/13 M 41
2 232.1 12/15/13 M 66
3 601.1 11/19/13 F 58
3 231.1 11/19/13 F 76
3 123.1 11/19/13 F 29
4 601.1 12/30/14 F 81
4 130.1 12/30/14 F 86
5 230.1 1/22/14 M 60
5 282.1 1/22/14 M 46
5 250.02 1/22/14 M 53
一般来说,我在考虑DO循环,但我不知道从哪里开始,因为数据集中有重复项,例如患者1(282.1列出两次)。我不知道如何解释。有什么想法吗?
目标诊断计数为282.1,232.1,250.02。在这个例子中,患者1的计数为3,患者2的计数为2,等等。
编辑: 这是我使用的,但输出显示输出中多行的每个PatientID。
PROC SQL;
create table want as
select age, gender, patientID,
count(distinct diagnosis_description) as count
from dz_prev
where diagnosis in (282.1, 232.1)
group by patientID;
quit;
这就是输出表的样子。为什么这个患者ID会出现这么多次?
Obs AGE GENDER PATIENTID count
1 55 Male 107828695 1
2 54 Male 107828695 1
3 54 Male 107828695 1
4 54 Male 107828695 1
5 54 Male 107828695 1
答案 0 :(得分:3)
我认为你可以通过SQL语句得到你想要的东西
A const
这只过滤您感兴趣的诊断,通过PatientID计算它们看到的不同时间,并将结果保存到新表中。
答案 1 :(得分:3)
如果您包含的变量既不是分组变量也不是汇总统计信息,那么SAS会很乐意将您的汇总统计信息重新合并回所有源记录。这就是你获得多个记录的原因。如果您的数据集涵盖多年,AGE通常会有所不同。如果您的数据混乱,GENDER也会有所不同。因此,为了快速分析,您可以尝试这样的事情。
create table want as
select patientID
, min(age) as age_at_onset
, min(gender) as gender
, count(distinct diagnosis_description) as count
from dz_prev
where diagnosis in (282.1, 232.1)
group by patientID
;