Изменение номинальных данных - несколько имен на «Другие» / - PullRequest
0 голосов
/ 14 февраля 2020

Я очень плохо знаком с R. У меня есть переменная с 1000 различными типами вин (номинальная переменная). Некоторые более распространенные, такие как Chardonnay et c, представлены> 100 раз, в то время как есть несколько, которые присутствуют в переменной только один или два раза. Всего их насчитывается около 400 из 1000 видов вина. Я хочу переименовать все эти разные, редкие типы вин в «Другие», без необходимости набирать и переименовывать каждое отдельное вино. Надеюсь, что это имеет смысл.

1 Ответ

0 голосов
/ 14 февраля 2020

Вы можете использовать table для подсчета частоты появления каждого вина, а если оно меньше n, заменить его на "Other". Если у вас есть символьный вектор, вы можете сделать

n <- 2
wine_data <- c('wine1','wine1', 'wine2', "wine1", "wine2", "wine3")
wine_data[wine_data %in% names(Filter(isTRUE, table(wine_data) <= n))] <- 'Other'
wine_data
#[1] "wine1" "wine1" "Other" "wine1" "Other" "Other"

Если у вас есть факторы, вам необходимо сначала добавить дополнительный уровень к вектору перед его заменой.

wine_data <- factor(c('wine1','wine1', 'wine2', "wine1", "wine2", "wine3"))
levels(wine_data) <- c(levels(wine_data), "Other")
wine_data[wine_data %in% names(Filter(isTRUE, table(wine_data) <= n))] <- "Other"
droplevels(wine_data)
#[1] wine1 wine1 Other wine1 Other Other
#Levels: wine1 Other
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...