我有一个数据框架(d),由55个变量的640个观测组成。
我想随机抽样这个数据框架在10个子数据框架的64个观察,为55个变量。我不希望任何观察都在多个子数据帧中。
此代码适用于一个示例。
d1 <- d[sample(nrow(d),64,replace=F),]我怎么能重复这种治疗十次?
这个给了我一个10个变量的数据(每个变量是一个样本.)
d1 <- replicate(10,sample(nrow(d),64,replace = F))}有谁可以帮我?
发布于 2014-05-23 15:59:00
下面是一个在data.frames列表中返回结果的解决方案:
d <- data.frame(A=1:640, B=sample(LETTERS, 640, replace=TRUE)) # an exemplary data.frame
idx <- sample(rep(1:10, length.out=nrow(d)))
res <- split(d, idx)
res[[1]] # first data frame
res[[10]] # last data frame唯一棘手的部分是创建idx。idx[i]标识{1,...,10}中的结果data.frame,idx[i],其中将出现d的i第四行。这种方法向我们保证,任何行都不会放置在超过1 data.frame中。
另外,请注意,sample返回(1,2,...,10,1,2,...,10)的随机排列。
另一种方法是使用:
apply(matrix(sample(nrow(d)), ncol=10), 2, function(idx) d[idx,])https://stackoverflow.com/questions/23833648
复制相似问题