替換值我試圖創建一個函數的變量替換離羣值:自定義功能中的R
outlier_upper_replace <- function(x, level=1.5) {
lowerq = quantile(x, na.rm=TRUE)[2]
upperq = quantile(x, na.rm=TRUE)[4]
iqr = upperq - lowerq
outlier_upper = (iqr * level) + upperq
x[x > outlier_upper] <- outlier_upper
}
我不明白爲什麼outlier_upper_replace(prod$varname)
沒有替代的價值。
如果我運行下面的代碼,這是上述功能的特定情況下,該值被替換:
level = 1.5
lowerq = quantile(prod$varname, na.rm=TRUE)[2]
upperq = quantile(prod$varname, na.rm=TRUE)[4]
iqr = upperq - lowerq
outlier_upper = (iqr * level) + upperq
prod$varname[prod$varname > outlier_upper] <- outlier_upper
爲什麼發生這種情況任何見解?
編輯:實例
set.seed(1)
x <- rnorm(100)
x <- c(-10, x, 10)
boxplot(x, main="start boxplot")
#function to bin-in upper outliers
outlier_upper_replace <- function(x, level=1.5) {
lowerq = quantile(x, na.rm=TRUE)[2]
upperq = quantile(x, na.rm=TRUE)[4]
iqr = upperq - lowerq
outlier_upper = (iqr * level) + upperq
x[x > outlier_upper] <- outlier_upper
return(x)
}
outlier_upper_replace(x)
boxplot(x, main="end boxplot")
你能舉一個你運行失敗的例子嗎?在我看來,你給的代碼應該工作。 – Badger
謝謝我將提供一個代碼示例 – myst999