【发布时间】:2011-12-06 09:37:19
【问题描述】:
我有一个带有布尔值的输入向量vi。我想从值为真的向量中抽取一个大小为n的随机样本,所以最终向量vf具有这些属性
向量的长度相等
length(vf) == length(v0)vf具有n真实值n==sum(vf)vf中的真实值不能大于v0中的真实值 nvf中的所有真值在vi中也为真
向量表示数据框中的行选择,这实现了分层样本。到目前为止,我想出了如何使用which() 获取行号,使用sample() 获取随机样本,但最后一部分是重新创建布尔向量。可能有更优雅的方式?
例如:
n <- 1
v0 <- c(T,T,F,F)
vf <- c(T,F,F,F)
【问题讨论】:
-
那么是
length(vf) == length(v0)和n <= sum(v0)吗? -
Tommy:是的,长度完全相等,
vf中的真值个数不能多,所以我会使用不替换的采样。 -
您是否只是想从数据框中获取随机的行样本?我发现很难理解你想要做什么。如果您可以添加一个示例,将会有所帮助。
-
@Seth:它比随机样本要复杂一点:它更像是子集的随机样本。作为更多背景知识,这是我实施过采样的一个步骤,如“掌握数据挖掘”一书(第 197 页)中所述。向量
v0表示数据框中有负面响应的行,我需要减少负面响应,因为太多了。
标签: r