我想分析临床层面的依从率,但我有很多患者属于多个诊所。我想为每个这样的病人随机分配一个诊所。有人知道怎么做吗?我阅读了过程调查选择,过程计划,但不确定如何做。
提前感谢!
如果您只是想随机选择其中一家诊所,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;