Я имею дело с категориальной переменной, полученной из базы данных, и я хочу использовать факторы для поддержания «полноты» данных.Уровни хэша или списка факторов
Например, у меня есть таблица, которая хранит цвета и связанные с ними числовой идентификатор
ID | Color ------+------- 1 | Black 1805 | Red 3704 | White
Так что я хотел бы использовать фактор для хранения этой информации в кадре данных, таких как:
Car Model | Color ----------+------- Civic | Black Accord | White Sentra | Red
где цветная колонка является фактором, а базовые данные, хранящиеся, а не как строка, на самом деле являются c (1, 3704, 1805) - идентификаторами, связанными с каждым цветом.
Таким образом, я могу создать настраиваемый фактор, изменив атрибут уровней объекта фактор-класса для достижения этого эффекта.
К сожалению, как вы можете видеть в примере, мои идентификаторы не увеличиваются. В моем приложении у меня есть 30 уровней, а максимальный ID для одного уровня - ~ 9 000. Поскольку уровни хранятся в массиве для множителя, это означает, что я храню целочисленный вектор длиной 9000 с только 30 элементами в нем.
Можно ли использовать хэш или список для более эффективного выполнения этого эффекта? то есть, если бы я использовал хэш в атрибуте уровней фактора, я мог бы хранить все 30 элементов с любыми индексами, которые мне нравятся, без создания массива размера max (ID).
Заранее благодарен!
Спасибо, Томми. Я надеюсь на что-то, что не позволит сделать второй шаг (поиск фактического идентификатора), но то, что вы предложили, может оказаться таким же хорошим, как и получается. –
... Я обновил ответ одним возможным решением ... – Tommy
Это решение кажется немного менее изящным для меня, чем другой хэш-ответ (хотя, вероятно, проще работать), но - удивительно - я получая лучшую производительность с этим кодом, чем я использовал хэш. Похоже, хотя и постоянное время для извлечения элемента из хешированной среды достаточно долго, чтобы ваш код на основе массива работал лучше, когда количество уровней <~ 4000 (хеш принимает константу .25s для форматирования строки в 10 000 строк df , ваш занимает .17 + .0000212L где L - количество уровней). –