Я пытаюсь создать функцию для замены выпадающих в переменной:Пользовательская функция, чтобы заменить значения в 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
Любые идеи о том, почему это происходит?
EDIT: Пример
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