我有一个包含10行(值)的数据集。数据例如:
value <- c(40.557669, 44.436873, 18.541628, 16.524613, 19.34,
10.07, 17.33, 20.155240, 15.31, 101.23,
)
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)
我想用随机极值替换当前值,低于12.5%且高于87.5%。
如何做到最好?
谢谢!
答案 0 :(得分:0)
我遇到了您提供的数据集的问题,所以让我们重复一遍。从data.frame
开始,其中包含一列value
,包含50个随机整数:
set.seed(4)
df <- data.frame(value = sample(1:100, 50))
获得12.5%和87.5%的ntiles:
ntiles <- quantile(df$value, probs = c(0.125, 0.875))
# ntiles
# 12.5% 87.5%
# 19.625 85.500
现在将data.frame
分为下极端和上极端:
lowers <- subset(df, value < ntiles[1])
uppers <- subset(df, value > ntiles[2])
最后,来自lowers$value
和uppers$value
的组合小组的示例:
sample(c(lowers$value, uppers$value), NROW(df), replace = T)
我使用NROW(df)
(将为50)从原始数据集中获取相同数量的记录。