Вы можете использовать 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