Переименование многих уровней фактора - R -
Я пытаюсь переименовать имена всех уровней моих факторных переменных, чтобы я мог запустить TukeyHSD
, Процедура Тьюки не нравится, когда уровни названы числами. Поэтому меня не волнует само название, я хочу, чтобы имя было только символом - имена могут состоять из отдельных букв алфавита.
Проблема в том, что у меня очень много уровней. Например:
x1 <- sample(1:75,100,replace=T)
x1 <- as.factor(x1)
> str(x1)
Factor w/ 54 levels "1","2","4","5",..: 26 33 23 23 15 18 21 12 29 16 ...
Единственный способ, которым я знаю, как переименовать их все, - это ввести название каждого уровня вручную:
levels(x1) <- c('name1', 'name2',...,'name54')
Как я могу избежать ввода всех имен по одному? Есть ли автоматическое переименование?
Спасибо!
1 ответ
Решение
Ответ @Aurèle в комментариях может быть решением, но если вам не нужны цифры на ваших уровнях, вы можете попробовать комбинировать случайные буквы. Вот возможное решение:
sample(combn(letters, 2, FUN = function(x) {paste0(x[1], x[2])}), length(levels(x1)))
Выход:
[1] "uv" "co" "ko" "eg" "ew" "dv" "ej" "px" "bc" "ku" "ip" "hz" "dk" "ou" "cd" "an" "hv" "nz" "uy" "bd"
[21] "kz" "af" "oy" "qz" "kl" "be" "ox" "bi" "mv" "fo" "el" "gj" "tv" "lv" "cl" "vx" "hl" "hy" "rv" "np"
[41] "dt" "br" "gz" "av" "aw" "nr" "bj" "ho" "gk" "mq" "ms" "lp" "jw" "gi" "cq"