我有一个大型数据集,每个人都有多行。每个人都有一个唯一的ID,每一行都被编码为假人1或0,关于医生的访问类型。 IE:访问可以在医生办公室,如果是,则编码为1,如果不是,则编码为0.我想计算每种类型的每次访问次数医生每个人都有。我尝试使用count distinct:
proc sql;
create table all as select ID;
count (distinct doctor) as doctor1
from data
group by ID;
quit;
然而,这似乎没有给我我想要的东西。 任何有关使用哪些代码的帮助或指示都会非常感激。
示例数据:
data this;
datalines;
rid dateofvisit doctor hospital clinic;
1 1/1/2014 1 0 0
1 1/3/2014 0 1 0
2 1/5/2014 1 0 0
3 1/6/2014 1 0 0
1 1/7/2014 1 0 0
3 1/8/2014 0 0 1
答案 0 :(得分:1)
计数功能通常会计算所有出现次数。与不同的一起,它将计算不同种类的出现次数。如果我理解正确的话,这不是你的愿望。
由于您的出现是用1编码的,您可以使用sum函数计算患者访问不同类型医生的次数。
proc sql;
create table all as select rid,
sum (doctor) as doctor_visits,
sum (hospital) as hospital_visits,
sum (clinic) as clinic_visits,
sum(sum(doctor, hospital, clinic)) as total_visits
from this
group by rid;
quit;