使用具有相同代码 (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
将此列表压缩为单个矩阵
在 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
将此列表压缩为单个矩阵