Define
x <- data.frame(
ID=letters[1:10],
class = as.factor(c(rep(1,5),rep(2,5))),
treat = rep(0,10))
s.t.
> x
ID class treat
1 a 1 0
2 b 1 0
3 c 1 0
4 d 1 0
5 e 1 0
6 f 2 0
7 g 2 0
8 h 2 0
9 i 2 0
10 j 2 0
我有两个级别的治疗,1 和 2。我想为每个级别分配一个单元。随机化后,我们得到类似的结果:
> x
ID class treat
1 a 1 0
2 b 1 0
3 c 1 1
4 d 1 0
5 e 1 2
6 f 2 0
7 g 2 0
8 h 2 0
9 i 2 2
10 j 2 1
英石。单位c and j获得 1 级治疗并且e and i2级。
如何在 R 中生成治疗向量?
我假设你只是想分配one1 级治疗和one每班2级待遇。您可以使用ddply
函数从plyr
包即可轻松完成:
set.seed(1)
require(plyr)
> ddply(x, .(class), transform,
treat = replace(treat, sample(seq_along(treat),2), 1:2))
ID class treat
1 a 1 0
2 b 1 1
3 c 1 0
4 d 1 0
5 e 1 2
6 f 2 0
7 g 2 0
8 h 2 1
9 i 2 2
10 j 2 0
解释一下:ddply
函数将数据帧分割为class
变量,并且在每个数据帧内,它“transforms
" the treat
列,将 2 个随机选择的条目替换为 1 和 2。sample(...,2)
函数在中选择两个随机索引treat
柱子。其他变体(例如,为每种治疗类型分配 1 个以上)可以类似地完成。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)