Допустим, у меня есть вектор, который содержит значения от 0 до 12 (непрерывные), представляющие возраст, а также 2 значения токенов 97 и 99, которые обозначают «не отвечал» и «отсутствует» соответственно, поэтому что-то вроде:
v <- sample(c(sample(1:12, 95, replace = TRUE), 99, 99, 97, 99, 99))
Я хочу преобразовать этот числовой вектор в вектор факторов, где я дискретизирую непрерывные значения от 1 до 12 в три ячейки с одинаковыми интервалами (т. Е. [1,4), [4, 8), [8,12]
), чтобы в итоге я получилвектор факторов с 5 уровнями, три для бункеров и 2 для 97
и 99
.Я пытаюсь найти лучший / самый эффективный способ сделать это очень обычно в R.
Обновление
Чтобы выразиться более конкретно, я хочу функциюnumeric2factor
, который принимает вектор значений vec
, вектор токенов tokens
, диапазон непрерывных значений, заданных start
и end
, и функцию дискретизации discrFunc
.numeric2factor
преобразует vec = v
из вышеприведенного примера в вектор факторов.
Предположим, что end
меньше самых низких значений токенов (например, end=12
, а самое низкое значение токена является чем-то вроде97), поэтому нет никакого перекрытия между непрерывными и категориальными значениями.
discrFunc
делает что-то вроде возврата точек отсечения (согласно некоторому методу дискретизации) только непрерывных значений из vec
.