我有一个包含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”。
然后我想用这些随机值(&gt; 3和&lt; 3.94)替换列“值”(30行)。
预期结果如下:
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)
如何做到最好?
谢谢!
答案 0 :(得分:1)
如何从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