2016-09-15 66 views
0

我有一個數據集,其中包括研究中果蠅的不同基因系(線)的個體數量(n)以及存活(存活)的數量。這被分成重複(REP)該數據幀看起來像這樣:將生存分數數據轉換爲R中的二項式計數數據?

line rep n alive trt 
1 21 1 5 2  control 
2 21 2 5 4  control 
3 26 1 5 1  control 
4 26 2 5 4  control 

爲了擬合二項式模型,我想分數(活着/ N)來計算轉換數據。到目前爲止,我一直在手工做的(這是很辛苦)創建這樣一個數據幀:

line rep trt  surv 
1  21 1 control 0 
2  21 1 control 0 
3  21 1 control 0 
4  21 1 control 1 
5  21 1 control 1 
6  21 2 control 0 
7  21 2 control 1 
8  21 2 control 1 
9  21 2 control 1 
10 21 2 control 1 
11 26 1 control 0 
12 26 1 control 0 
13 26 1 control 0 
14 26 1 control 0 
15 26 1 control 1 
16 26 2 control 0 
17 26 2 control 1 
18 26 2 control 1 
19 26 2 control 1 
20 26 2 control 1 

這允許我創建一個模型,其中生存是響應變量,行和治療之間的相互作用(TRT)是一個主要的效果,代表是一個隨機效應。該模型起作用,問題是需要多少時間才能生成這個數據(我總共有139行,每行5個代表)。有人可以幫我創建一個函數,給我看一個函數或者一個能幫助我的包嗎?有沒有更簡單的方法來做到這一點?

由於提前,

菲爾

回答

1

與樣品數據

dd<-read.table(text=" line rep n alive trt 
1 21 1 5 2  control 
2 21 2 5 4  control 
3 26 1 5 1  control 
4 26 2 5 4  control", header=T) 

您可以使用dplyrtidyr幫助...

庫(dplyr) 庫( tidyr)

dd %>% mutate(dead=n-alive) %>% select(-n) %>% 
    gather(status, count, c(alive,dead)) %>% 
    slice(rep(1:n(), .$count)) %>% select(-count) %>% 
    transform(surv=ifelse(status=="alive",1,0), status=NULL) %>% 
    arrange(line, rep, trt, surv) 

我們用gather()來爲surv=0surv=1不同的行,我們使用slice()複製所需的行。

+0

Flick先生,非常感謝。這工作完美,即使我的大型數據集。非常感謝您的快速回復! – Melderon