如何按因子生成随机治疗变量?
定义
x <- data.frame(
ID=letters[1:10],
class = as.factor(c(rep(1,5),rep(2,5))),
treat = rep(0,10))
st
> 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。 2. 我想为每个级别 st 分配每个班级一个单位,随机化后,我们得到如下内容:
> 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
st 单位 c 和 j 获得 1 级治疗以及e和i级别2。
如何在R中生成治疗向量?
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
I have a treatment with two levels, 1 & 2. I want to assign exactly one one unit per class to each level s.t. that, after randomization, we get something like:
> 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
s.t. units c and j get level 1 of treatment and e and i level 2.
How do I generate the treatment vector in R?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我假设您只想在每个班级中分配一个 1 级治疗和一个 2 级治疗。您可以使用
plyr
包中的ddply
函数轻松完成此操作:解释一下:
ddply
函数按 < code>class 变量,并且在每个数据帧内,它通过用 1 和 2 替换 2 个随机选择的条目来“转换”treat
列。代码>样本(...,2)函数在treat
列中选取两个随机索引。其他变体(例如,为每种治疗类型分配 1 个以上)可以类似地完成。I'll assume you just want to assign one level 1 treatment and one level 2 treatment in each class. You can use the
ddply
function from theplyr
package to do it easily:To explain: the
ddply
function splits the data-frame by theclass
variable, and within each data-frame, it "transforms
" thetreat
column by replacing 2 randomly chosen entries by 1 and 2. Thesample(...,2)
function picks two random indices in thetreat
column. Other variants (e.g. assign more than 1 of each treatment type) can be done similarly.