Уменьшите уровни от переменной фактора

Я должен сделать случайный лес в большом наборе поездов, но я не могу использовать переменную с более чем 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.

Другие вопросы по тегам