У меня есть большой фрейм данных 1 с большим количеством столбцов, которые являются факторами. Я хочу изменить порядок уровней факторов для каждого фактора.
У меня есть кадр данных поиска 2 для правильных порядковых уровней. Это означает, что я могу ссылаться на кадр данных поиска, используя переменную для фактора. Я могу взять заказ и поместить его в другую переменную. Пока все хорошо.
Упрощенный пример:
d = tibble(
size = c('small','small','big', NA)
)
d$size = as.factor(d$size)
levels(d$size) # Not what I want.
proper.order = c('small', 'big') # this comes from somewhere else
Я могу использовать proper.order
, чтобы изменить один столбец в d.
d$size = factor(d$size, levels = proper.order)
levels(d$size) # What I want.
Я хочу сослаться на имя столбца (size
), используя переменную.
Это не работает:
my.column = 'size'
d[names(d) == my.column] = factor(d[names(d) == my.column], levels = proper.order, exclude = NULL)
levels(d$size) # What I want.
d # Not what I want.
Я ожидаю увидеть этот фактор переупорядоченным. Бывает. Я ожидаю, что фактор сохранит свои значения (очевидно). Все они установлены на NA.
Я подозреваю, что это потому, что d[names(d) == my.column]
- это не фактор, а беда Но тогда почему уровни факторов меняются? И как я могу добраться до тибля и схватить фактор?