为SAS中的每个人计算虚拟变量?

时间:2015-04-16 02:56:52

标签: count sas

我有一个大型数据集,每个人都有多行。每个人都有一个唯一的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

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;