假设我有下面的data.frame,其中treat == 1
表示id
接受治疗,prob
是计算的概率treat == 1
。如何在R中进行组匹配?
set.seed(1)
df <- data.frame(id = 1:10, treat = sample(0:1, 10, replace = T))
df$prob <- ifelse(df$treat, rnorm(10, .8, .1), rnorm(10, .4, .4))
df
id treat prob
1 1 0 0.3820266
2 2 0 0.3935239
3 3 1 0.8738325
4 4 1 0.8575781
5 5 0 0.6375605
6 6 1 0.9511781
7 7 1 0.8389843
8 8 1 0.7378759
9 9 1 0.5785300
10 10 0 0.6479303
为了最小化的选择偏差,我现在想的treat
和prob
的值的基础上创建伪治疗组和对照组:
当与
treat == 1
任何id为内0.1prob
的任何id
与treat == 0
,我想要group
的值被“处理”。当与
treat == 0
任何id为内0.1prob
与treat == 1
任何id
的,我想的group
值设定为“控制”。
下面是我想什么,结果是一个例子。
df$group <- c(NA, NA, NA, NA, 'control', NA, NA, 'treated', 'treated', 'control')
df
id treat prob group
1 1 0 0.3820266 <NA>
2 2 0 0.3935239 <NA>
3 3 1 0.8738325 <NA>
4 4 1 0.8575781 <NA>
5 5 0 0.6375605 control
6 6 1 0.9511781 <NA>
7 7 1 0.8389843 <NA>
8 8 1 0.7378759 treated
9 9 1 0.5785300 treated
10 10 0 0.6479303 control
我该怎么做呢?在上面的例子中,匹配是通过替换来完成的,但是没有替换的解决方案也是受欢迎的。
我接受了这个答案它是一个完整的解决方案,使用基本的R函数并使用预定义的函数和条件整齐地执行匹配。 – lillemets