Я пытаюсь создать функцию для ввода исключений в существующий фрейм данных.Вставка выбросов в фрейм данных
Я начал создавать новый dataframe outs
с использованием значений исходного кадра данных max
и min
. Эта фрейма данных outs
будет содержать некие amount
данных с выбросами. Позже я хочу вставить выпадающие значения фрейма данных outs
в исходный фрейм данных.
То, что я хочу получить, - это функция для ввода определенного количества выбросов исходному фрейму. У меня есть разные проблемы, например: Я знаю, если я правильно я использую runif создать dataframe отклоняющихся и второй я не знаю, как впрыснуть выбросы в temp
код, который я пытался до сих пор является:
addOutlier <- function (data, amount){
maxi <- apply(data, 2, function(x) (mean(x)+(3*(sd(x)))))
mini <- apply(data, 2, function(x) (mean(x)-(3*(sd(x)))))
temp <- data
amount2 <- ifelse(amount<1, (prod(dim(data))*amount), amount)
outs <- runif(amount2, 2, min = mini, max = maxi) # outliers
if (amount2 >= prod(dim(data))) stop("exceeded data size")
for (i in 1:length(outs))
temp[sample.int(nrow(temp), 1), sample.int(ncol(temp), 1)] <- outs
return (temp)
}
Пожалуйста, любая помощь, чтобы сделать эту работу, буду глубоко признателен
Я не уверен, что понимаю вашу цель, но я думаю, что у вас есть ошибка в коде. 'runif (n, mini, maxi)' даст вам значения 'n' между двумя указанными вами крайностями. Вероятно, это не будет выбросом и, конечно же, не будет гарантировано. –
@Alex Я вижу проблему, любое предложение, как я могу сделать, чтобы гарантировать, что у вас есть выбросы – mina
Вы не определили, что вы подразумеваете под «outlier» .... очевидно, 'runif (n, -Inf, mini)' , 'runif (n, maxi, Inf)' будет работать, но это, вероятно, не реалистично. –