r语言 - 样本复制



我有一个数据框架(d),由55个变量的640个观测值组成。

我想在64个子数据帧的10个子数据帧中随机抽样这个数据帧55个变量的观测值。我不想看到任何观察结果多于一个子数据帧

此代码适用于一个示例

d1 <- d[sample(nrow(d),64,replace=F),]

如何重复十次?

这个给我一个包含10个变量的数据帧(每个变量是一个样本…)

d1 <- replicate(10,sample(nrow(d),64,replace = F))}

有人能帮我吗?

这是一个以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

唯一棘手的部分是创建idxidx[i]标识生成的数据帧,idx[i]在{1,…,10},其中将出现di行。这样的方法保证我们不会将任何一行放入超过1个data.frame中。

同样,请注意sample返回(1,2,…,10,1,2,…,10)的随机排列。

另一种方法是:

apply(matrix(sample(nrow(d)), ncol=10), 2, function(idx) d[idx,])

最新更新