Уменьшите уровни от переменной фактора
Я должен сделать случайный лес в большом наборе поездов, но я не могу использовать переменную с более чем 53 уровнями.
Переменная фактора (train$tip
) Мне нужно уменьшить имеет 150 уровней (KHC, KTF, KGL, ...). Как я могу (быстро) удалить (или удерживать только 53 уровня) уровни, которые появляются несколько раз, и удерживать уровни с большей счетностью?
Должен ли я написать все названия уровней, которые я вижу, есть несколько раз или есть более быстрый метод?
train <- train[!train$tip == "KTF", ]
1 ответ
Решение
Вы могли бы сделать:
train <- train[train$tip %in% names(sort(table(train$tip), decreasing = TRUE))[1:53], ]
table()
вычисляет частоту уровней; sort()
упорядочивает их в порядке убывания; names()
получает уровень, а не частоту; а также [
выбирает только первые 53.