0
我想有在用下面的例子的數據的數據幀上執行數據的多個t.tests一般功能:使用迴路,用於在數據幀中的多個測試
dat <- data.frame(ID=c(1:100),
DRUG= rep(c("D1","D2","D2","D3","D3","D3","D5","D1","D4","D2"),10),
ADR=rep(c("A1","A2","A3","A6","A7","A8","A4","A2","A1","A2"),10),
X= sample(1:250, 100, replace=F))
基本上,我想要運行對於DRUG-ADR的每個獨特組合,X值爲兩個t檢驗。如果我以D1-A1爲例,我想測試D1-A1與D1-A <> 1的X值,D1-A1與D的差值爲<> 1-A1。下面是我對這個例子的語法,但我的問題是如何使一個通用的循環/函數爲DRUG-ADR的每個獨特組合執行兩個測試。
x <- ifelse (dat$DRUG == "D1" & dat$ADR == "A1",dat$X, NA)
x <- x[!is.na(x)]
y <- ifelse (dat$DRUG != "D1" & dat$ADR == "A1",dat$X, NA)
y <- y[!is.na(y)]
z <- ifelse (dat$DRUG == "D1" & dat$ADR != "A1",dat$X, NA)
z <- z[!is.na(z)]
t.test(x,y)
t.test(x,z)
所以備案號4(D3-A6)的語法是:
x <- ifelse (dat$DRUG == "D3" & dat$ADR == "A6",dat$X, NA)
x <- x[!is.na(x)]
y <- ifelse (dat$DRUG != "D3" & dat$ADR == "A6",dat$X, NA)
y <- y[!is.na(y)]
z <- ifelse (dat$DRUG == "D3" & dat$ADR != "A6",dat$X, NA)
z <- z[!is.na(z)]
t.test(x,y)
t.test(x,z)
任何人都得到了一個通用函數是個好主意?
編輯:我的理想結果將是下表:
Drug ADR pvalue1 pvalue2
1 D1 A1 pval11 pval21
2 D2 A2 pval12 pval22
3 D.. A.. pval1.. pval2..