使用以下代码从数据框datta
创建引导样本时
boot1a <- replicate(3, do.call("rbind", lapply(sample(unique(datta$pid),2000,replace=TRUE), function(x) datta[datta$pid==x,])), simplify=FALSE)
boot1b <- data.frame(boot1a) # data frame from the list
sample1 <- boot1b[order(boot1b$pid),] # sorting based on pid and storing
引导样本sample1
中的变量的名称以.1, .2, .3, ...
结尾。 (pid
是人员ID,它对同一个人的不同观察采用相似的值)。例如,使用上面的代码,xy
中的变量datta
将具有与第一个,第二个和第二个相关联的名称xy
,xy.1
和xy.2
第三个bootstrap样本。我宁愿让不同的bootstrap样本命名不同,每个变量名都保留与原始数据框中的变量名相同。在上面的例子中,我想要的是存储在三个不同数据帧中的自举样本,比如boot1, boot2, boot3
,其中每个数据帧中的变量名称与原始数据帧中的变量名称相同。我开始一次手动进行一次复制,但是要花费大量时间来创建许多自举样本。有人建议如何以更好的方式做到这一点吗?
修改
数据框datt
中许多变量中的四个变量的前几个观察结果如下。
pid xy zy wy
1 10 2 -5
1 12 3 -4.5
1 14 4 -4
1 16 5 -3.5
1 18 6 -3
1 20 7 -2.5
2 22 8 -2
2 24 9 -1.5
2 26 10 -1
2 28 11 -0.5
2 30 12 0
2 32 13 0.5
答案 0 :(得分:2)
以下是示例示例:
数据强>
set.seed(123)
data<-rnorm(100, 160, 20)
data1<-as.data.frame(matrix(data, nrow = 20, ncol = 5, byrow = FALSE))
n<-5
data2<-do.call("rbind", replicate(n, data1, simplify=FALSE))
data2$fac<-as.factor(rep(1:n,each=20))
<强>取样强>
library(plyr)
sample1<-ddply(data2,.(fac),summarize, mysample=sample((1:length(fac)),size=1,replace=TRUE))
fac mysample
1 1 18
2 2 14
3 3 13
4 4 20
5 5 14