使用具有相同代码 (ID) 的条目重新采样

Resampling with entries with same code (ID)

R 中,我正在尝试对我的数据集重新采样。

数据库A包括第一列(整数)的一些代码和每行的特征如下:

A <- as.matrix(cbind(floor(runif(1000, 1,101)), matrix(rexp(20000, rate=.1), ncol=20) ))

第一列重复了一些代码。

我想从第一列随机重新采样代码并创建一个新的矩阵或数据框,这样对于重新采样代码向量中的每个条目,它都会给我右侧。如果有更多的向量具有相同的重采样代码,它应该包括两者。此外,如果我对同一代码进行两次重采样,则 A 中具有相同重采样代码的所有行都应该出现两次。

---编辑---

重采样是通过替换完成的。到目前为止我所做的是:

res <- resample(unique(A[,1]), size = length(unique(A[,1])) , replace = TRUE, prob= NULL) 
A.new <- A[which(A[,1] %in% res),]

但是,假设 A 中的两行具有相同的代码(比如 2),并且向量 res 选择了 2 4 次。在 A.new 中我只会有 2 次(因为在 A[,1] 中有两行编码为 2),而不是让这两行重复 4 次

我们可以这样做:

A.new = sapply(res, function(x) A[A[,1] == x, ])
A.new = do.call(rbind, A.new)

第一行创建一个矩阵列表,其中 res 的每个值创建一个列表项,该列表项是 A 的子集,其中第一列等于 [=11= 的值].如果 res 多次包含相同的数字,则会为该值的每次出现创建一个矩阵。

第 2 行使用 rbind 将此列表压缩为单个矩阵