【发布时间】:2020-02-13 16:24:39
【问题描述】:
我有一个包含 40 列和 7 个观察值的数据框。我想重新采样数据集 1000 次,但按列。不替换列之外的数据。
当我使用函数 sample 时,replacement = TRUE。它取代了列。但是,我想做的是只对列中的数据进行重新采样,并让每一列保持原样。我也尝试在示例函数中使用参数组,但失败了。
感谢任何帮助。
# example data
c1 c2 c3 c4 c5 c40
r1 1.0 2 4 7.0 14.0 3.5
r2 2.0 4 6 8.0 20.0 5.0
r3 3.0 6 10 15.0 3.0 6.0
r4 1.5 3 5 7.5 1.5 3.0
r5 1.5 3 5 7.5 1.5 3.0
r7 1.5 3 5 7.5 1.5 3.0
trial = sample(group1_base, replace = TRUE)
View(trial)
c1 c2 c1 c4 c5 c4
r1 1.0 2 4 7.0 14.0 3.5
r2 2.0 4 6 8.0 20.0 5.0
r3 3.0 6 10 15.0 3.0 6.0
r4 1.5 3 5 7.5 1.5 3.0
r5 1.5 3 5 7.5 1.5 3.0
r7 1.5 3 5 7.5 1.5 3.0
【问题讨论】:
-
关于重采样 1000 次,你期望 1000 个数据集
-
是的,对于我拥有的小数据集,我想对其重新采样 1000 次,以便使用我拥有的模型计算每次观察的输出。我不确定我所拥有的样本量是否有意义。
-
如果您需要对每一列进行“n”次抽样,请使用 Georgery 帖子中的
replicate。n <- 10;lapply(group1_base, function(vec) replicate(n, sample(vec, replace = TRUE), simplify = FALSE)) -
在 lapply 函数上循环和在此处复制有什么区别?
-
如果您询问前面的代码,那么
lapply会遍历每一列,replicate会将每一列上的采样复制到“n”次
标签: r resampling