當我在by
選項中使用binom.test
時,我很困惑。R中的二項式檢驗使用by()on data.frame
它似乎不適用於某些數據框,但適用於我放在一起的一些虛擬數據。
調用mean()
的作品,因爲它應該,但...
我的示例代碼如下。
##### this does not work...
bug <- InsectSprays
bug$outcome <- ifelse(bug$count > 4, 1, 2)
bug$spray.n <- ifelse(bug$spray == "A", 1,
ifelse(bug$spray == "B", 2,
ifelse(bug$spray == "C", 3,
ifelse(bug$spray == "D", 4,
ifelse(bug$spray == "E", 5, 6)))))
binom.test(table(bug$outcome), alternative="greater")
by(bug, bug$spray.n, FUN = function(X) binom.test(table(X$outcome),
alternative="greater"))
by(bug, bug$spray.n, FUN = function(X) mean(X$count)
##### this works...
##### generating example data
##### this has three groups, each with a binomial indicator
##### success is coded as 1, failure as a 0
set.seed(271828)
center <- gl(3,10)
outcome <- rbinom(length(center), 1, .6777)
id <- seq(1,length(center),1)
dat <- as.data.frame(cbind(center,id,outcome))
##### have to recode success and failure to use table()
##### !!!!! would like to avoid having to do this...
dat$primary <- ifelse(dat$outcome == 1 , 1 , 2)
dat$cent <- as.factor(dat$center)
##### carrying out one sided binomial test for positive outcome
binom.test(table(dat$primary), alternative = "greater")
##### would like to carry out the same test by center...
by(dat, dat$center, FUN = function(X) binom.test(table(X$primary),
alternative = "greater"))
by(dat, dat$center, FUN = function(X) mean(X$outcome))
,如果你嘗試你可能會看到一個問題 –
在沒有警告或評論的情況下,無法在'rm(list = ls())中輸入。 –
@DWin對不起,偷偷摸摸的時候,我沒有密切關注...... –