2011-03-23 73 views
2

定義如何通過因子生成隨機治療變量?

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.我想每類恰好一個一個單元分配給每個級別S.T.在隨機化後,我們得到類似於:

> 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.單位ç和治療Ĵ GET水平1和Ë級別2

如何產生的R治療載體?

回答

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可變拆分數據幀,每個數據幀中,其「transforms」的treat列通過用1和2替換2個隨機選擇的條目。sample(...,2)函數在treat列中選擇兩個隨機索引。其他變體(例如,分配多於1種的每種治療類型)可以類似地完成。

+0

非常感謝!這正是我想要的。根據您的意見對問題進行小的更改以使其更清晰。 – Fred 2011-03-23 02:45:41

+0

不客氣,很高興幫助。 – 2011-03-23 11:10:00