我正在分析一项包含 40 个人的研究,每个人评价 10 个小插曲。
indiv vign score score2 gender
1 1 5 3 1
1 2 2 4 1
1 3 8 1 1
. . . . .
. . . . .
. . . . .
39 10 9 1 1
40 8 1 5 0
40 9 3 8 0
我想采取引导措施,但我很快意识到采样小插曲是没有意义的。我们应该对人进行抽样(所以我们每人抽样大约 10 行)。
以下功能有效,但它是下一个功能的瓶颈。那么问题来了,如何才能更有效地做到这一点?
ResampleMultilevel <- function(data, groupvar) {
n <- length(unique(data[,groupvar]))
index <- sample(data[ , groupvar], n, replace = TRUE)
resampled <- NULL # one of the issues is that we do not know
# the size of the matrix yet, since it may vary.
for (i in 1:n) {
resampled <- rbind(resampled, data[data[, groupvar] == index[i], ])
}
return(resampled)
}
子集的问题是我找不到保留重复项的方法。
a <- cbind(rep(1:40, each = 10), rep(1:10, 4), rnorm(40), rnorm(40)), rep(1:10, 4), rnorm(40), rnorm(40))
index <- c(1,1)
subset(a, a[,1] == index)