Я хочу написать функцию, которая примет входной сигнал data.frame
и возвращает новый data.frame
, который заменил выбросы, используя функцию tsclean()
из пакета прогноза.Функция для удаления Outliers из DataFrame
Для примера ввода df
(содержащие очевидные выпадающие):
df <- data.frame(col1 = runif(24, 400, 700),
col2 = runif(24, 350, 600),
col3 = runif(24, 600, 940),
col4 = runif(24, 2000, 2600),
col5 = runif(24, 950, 1200))
colnames(df) <- c("2to2", "2to6", "17to9", "20to31", "90to90")
df$`2to2`[[12]]=10000
df$`17to9`[[20]]=6000
df$`20to31`[[8]]=12000
Я пытался решить эту проблему следующим образом
clean_ts <- function(df, frequency = 12, start = c(2014, 1), end = c(2015, 12)) {
ts <- ts(df, frequency = frequency, start = start, end = end)
results <- list()
for (i in 1:ncol(ts)) {
clean <- as.data.frame(tsclean(ts[,i]))
results[[i]] <- as.data.frame(cbind(clean))
}
return(results)
}
Я знаю, что это неправильно. Вместо того, чтобы возвращать список, я хочу, чтобы моя функция возвращала data.frame
с теми же размерами и именами столбцов, что и мой ввод data.frame
. Я просто хочу, чтобы столбцы data.frame()
были заменены в соответствии с функцией tsclean()
. Так из примера мой выход будет иметь следующий вид:
2to2 2to6 17to9 20to31 90to90
. . . . .
. . . . .
http://stackoverflow.com/questions/12866189/calculating-the-outliers-in-r Это может для вас тоже будет полезен. Идея: вы создаете функцию, которая использует фреймворк данных, суммирует фрейм данных путем нахождения квантилей, верхнего и нижнего порогов и фильтрует окончательный набор данных за пределами этого диапазона. – InfiniteFlashChess