2

定义

x <- data.frame(
     ID=letters[1:10],
     class = as.factor(c(rep(1,5),rep(2,5))),
     treat = rep(0,10))

英石

> 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。我想为每个级别 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 单元cj获得 1 级治疗,ei获得2 级治疗。

如何在 R 中生成处理向量?

4

1 回答 1

4

我假设您只想在每个班级中分配一种1 级治疗和一种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,并且在每个数据帧内,它通过用 1 和 2 替换 2 个随机选择的条目来“ transforms”列。该函数在列中选择两个随机索引。其他变体(例如,为每种治疗类型分配超过 1 个)可以类似地进行。treatsample(...,2)treat

于 2011-03-23T01:47:26.027 回答