【问题标题】:Sample a dataframe with replacement column-wise in R在 R 中对具有替换列的数据帧进行采样
【发布时间】: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 帖子中的replicaten <- 10;lapply(group1_base, function(vec) replicate(n, sample(vec, replace = TRUE), simplify = FALSE))
  • 在 lapply 函数上循环和在此处复制有什么区别?
  • 如果您询问前面的代码,那么 lapply 会遍历每一列,replicate 会将每一列上的采样复制到“n”次

标签: r resampling


【解决方案1】:

我们可以使用lapply 遍历列并执行sample

group1_base[] <- lapply(group1_base, sample, replace = TRUE)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-08
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多