Я пытаюсь сделать переменную фактора из числовой переменной в R. Я хотел бы отслеживать NA и новые ящики, которые я создаю. В новых ячейках некоторые цифры имеют допустимый диапазон, а некоторые - нет. Я забочусь о самих бункерах, но хочу создать «недействительный» уровень, в котором будут размещаться все, что не попадает в указанный диапазон.Использование cut(), чтобы сделать коэффициент
Вот пример:
library(reshape)
fac <- c(-1, 1, 2, 3, 4, 100, NA)
fac <- cut(fac, c(-Inf, 1, 2, 3, Inf))
fac <- addNA(fac)
combine_factor(fac,
variable=order(levels(fac))[c(2,3,5)],
other.label = "Invalid")
Что бы дать мне выход, который будет иметь уровни, которые я хочу быть интервалы, NA или недействительным.
Однако проблема в том, что я не хочу кодировать переменную с помощью чисел, потому что у меня есть несколько разных наборов данных, и не все из них содержат каждый уровень фактора.
Если изменить переменную так, что она не содержит какой-либо определенного уровня фактора:
fac <- c(-1, 1, 3, 4, 100, NA)
я получаю ошибку:
Error in factor(nvar[as.numeric(fac)], labels=c(levels(fac)[variable], : invalid 'labels'; length 4 should be 1 or 3.
Выход 1 (который работает, потому что у меня нет уровней, происходящих 0 раз):
[1] (1,2] (1,2] (2,3] <NA> Invalid Invalid Invalid
Levels: (1,2] (2,3] <NA> Invalid
Выход 2 (где один уровень: (1,2] имеет 0 occurren ces):
[1] (2,3] <NA> Invalid Invalid Invalid
Levels: (1,2] (2,3] <NA> Invalid
Второй сценарий - это то, где я испытываю ошибку.
Есть ли способ обойти эту ошибку?
Что такое 'combine_factor' функция? Откуда это? – A5C1D2H2I1M1N2O1R2T1
Его из пакета изменения. – dc3
Просьба указать желаемый результат для обоих тестов. – A5C1D2H2I1M1N2O1R2T1