2016-08-08 54 views
0

我有一個包含10行(值)的數據集。數據例如:R用隨機極值(低於12.5%並高於87.5%)替換當前列(值)

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

我與您提供的數據集有問題,所以讓我們重複這個。先從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$valueuppers$value樣品:

sample(c(lowers$value, uppers$value), NROW(df), replace = T) 

我用NROW(df)(它將是50)從原始數據集中獲取相同數量的記錄。

+0

謝謝賈森! – Gustavo