sas,如果患者去了多个诊所,如何将其随机分配到一个诊所



我想分析临床层面的依从率,但我有很多患者属于多个诊所。我想为每个这样的病人随机分配一个诊所。有人知道怎么做吗?我阅读了过程调查选择,过程计划,但不确定如何做。

提前感谢!

如果您只是想随机选择其中一家诊所,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;

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

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

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

/* 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;

最新更新