从区间中提取值的样本

  • 本文关键字:样本 提取 区间
  • 更新时间 :
  • 英文 :


我有一个包含30个值的数据集。数据示例:

value <- c(3.00, 3.30, 5.10, 2.09, 7.04,
   1.07, 7.33, 2.15, 3.27, 3.94, 3.07, 3.46, 5.45, 2.99, 7.89,
   1.67, 5.33, 2.56, 3.45, 3.76, 3.20, 3.50, 3.10, 2.67, 4.04,
   4.07, 3.33, 3.15, 2.27, 3.90) 
data <- data.frame(value)

使用分位数,我可以选择百分比之间的值25%,50%,75%。

例如:

data$value <- data$value[data$value>=quantile(data$value)[4]]
newvalue <- data$value[data$value>=quantile(data$value)[4]]
data$value <- sample(newvalue, dim(data)[1], replace=T)

我想提取一定范围内的随机值,即"大于3小于3.94"的值。

然后我想将列"值"(30行)替换为这些随机值(> 3和<</p> 3.94)。

预期的结果是:

value <- c(3.00, 3.30, 3.76, 3.20, 3.10,
   3.00, 3.46, 3.76, 3.27, 3.94, 3.07, 3.46, 3.76, 3.46, 3.90,
   3.30, 3.33, 3.94, 3.45, 3.76, 3.20, 3.50, 3.10, 3.20, 3.10,
   3.15, 3.33, 3.15, 3.00, 3.90)

如何做到最好?

谢谢!

生成一个从3.00到3.94的数字的seq序列,然后从中随机选择30个如何

sample(seq(3.00, 3.94, 0.01), nrow(data))
#[1] 3.01 3.80 3.65 3.84 3.05 3.25 3.49 3.68 3.27 3.24 3.03 3.28 3.42 3.30 3.82 
#[16] 3.39 3.67 3.71 3.78 3.72 3.02 3.23 3.64 3.10 3.48 3.34 3.09 3.38 3.74 3.93

如果您想从数据集中选择它,您可以尝试

sample(data[data$value > 3.0 & data$value < 3.94, "value"],nrow(data), replace = T)
#[1] 3.46 3.15 3.76 3.50 3.30 3.30 3.20 3.30 3.27 3.07 3.46 3.46 3.30 3.15 3.46 
#[16] 3.27 3.45 3.46 3.27 3.76 3.45 3.27 3.45 3.90 3.76 3.10 3.45 3.10 3.10 3.33

最新更新