sas,如果他/她去多个诊所,如何将患者随机分配到诊所

时间:2014-04-21 20:32:05

标签: random sas

我想分析临床水平的合规率,但我有很多患者属于多个诊所。我想为每个患者随机分配一个诊所。任何人都知道怎么做?我读过proc surveyselect,proc计划但不知道怎么做。

提前多多感谢!

2 个答案:

答案 0 :(得分:2)

如果你只是想随意选择一个诊所,proc surveyselect工作正常。使用组成data have,请参阅下面的代码。 n=1说每个阶层选择一条记录。

data have;
do patient = 1 to 20;
  do clinic = 1 to ceil(3*rand('Uniform'));
    output;
  end;
end;
run;

proc surveyselect data=have out=want n=1 seed=12345;
strata patient;
run;

如果患者多次在同一诊所,那么该诊所的选择机会会更高;如果您不想这样,请先按患者/诊所进行重复扣除。

答案 1 :(得分:1)

对于合规率,您可以使用所有患者而不是归因来研究每个诊所,或者您可以根据每个诊所花费的金额进行归因。

要进行随机分配,一种方法是为每个成员/诊所组合分配一个随机值。然后根据随机值对每个患者进行排序。然后只保留最大的随机数,这将是一个完全随机的诊所。

/* Get unique combinations of clinic and patient */
proc sql;
create table clinicdata as
select distinct clinic, patient
from rawdata;
quit;

/* Give each combination a random value r */
data clinicrandom;
set clinicdata;
call streaminit(123); /* set random number seed */
r = rand("uniform");
run;

/* Sort each patient by that random number */
proc sort data = clinicrandom;
by patient r;
run;

/* Only keep the highest value combination */
data clinicfinal;
set clinicrandom;
by patient;
if first.patient;
run;