2016-01-21 3 views
1

У меня есть набор данных с несколькими столбцами. Многие из этих столбцов содержат более 32 факторов, поэтому, чтобы запустить случайный лес (например), я хочу заменить значения в столбце в зависимости от их частоты.Заменить значение в столбце, основанном на частоте с использованием R

Один из колонки звучит так:

$ country          
: Factor w/ 92 levels "China","India","USA",..: 30 39 39 20 89 30 16 21 30 30 ... 

То, что я хотел бы сделать, это только сохранить верхний N (где N представляет собой значение в диапазоне от 5 до 20) стран, а также заменить остальные значения с "Другие". Я знаю, как рассчитать частоту значений, используя функцию таблицы, но я не могу найти решение для замены значений на основе такого правила. Как это может быть сделано?

ответ

4

Некоторые примеры данных:

set.seed(1) 
x <- factor(sample(1:5,100,prob=c(1,3,4,2,5),replace=TRUE)) 
table(x) 
# 1 2 3 4 5 
# 4 26 30 13 27 

Заменить все другие, чем топ-3 (уровней 2/3/5) с "Другие" уровни:

levels(x)[rank(table(x)) < 3] <- "Other" 

table(x) 
#Other  2  3  5 
# 17 26 30 27 
+0

Спасибо, это было совершенным. – user2762934

Смежные вопросы