В R есть способ разделить одну категориальную переменную на три на основе условия? - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь создать алгоритм случайного лесного машинного обучения по производительности некоторых предметов розничной торговли. Я использую R Studio для этого. В моем наборе данных у меня есть смесь как числовых, так и категориальных переменных. Моя проблема в том, что одна из моих категориальных переменных «Поставщик» имеет более 53 факторов (166, если быть точным), поэтому используемый мной пакет randomForest не позволяет мне его использовать. Набор данных выглядит следующим образом:

Месяц Год Поставщик ItemName UnitsSoldTY UnitsSoldLY Ценовая категория Количество магазинов

Я считаю, что переменная «Поставщик» будет очень важна для модели. Чтобы обойти ограничение в 53 фактора для категориальной переменной, я хотел бы разбить столбец «Поставщик» на три столбца. Тем не менее, я бы хотел, чтобы первый столбец содержал 33% лучших поставщиков по UnitsSold по всему набору данных. Во втором столбце будут средние 33% поставщиков по UnitsSold, а в третьем столбце будут нижние 33% поставщиков по UnitsSold. Таким образом, готовый продукт для трех столбцов будет выглядеть примерно так:

TopSupplier MidSupplier LowSupplier Месяц Год ItemName ...
ПоставщикА Другое Другое
Другой поставщикB Другой
Другой Другой поставщикC

Какие-нибудь советы или предложения о том, как это сделать?

Я попробовал заявление ifelse, но, похоже, не могу понять, как ранжировать поставщиков по всему набору данных, а затем включить это в качестве фактора, по которому поставщик попадает в какой столбец.

Я бы хотел, чтобы конечный результат имитировал вторую таблицу, которую я включил выше. Переменная «Поставщик» будет разбита на три столбца. В первом столбце будут содержаться только поставщики, которые составляют 33% «UnitsSold» из всего набора данных. Второй столбец будет иметь средние 33%, а третий столбец будет иметь нижние 33%.

1 Ответ

0 голосов
/ 15 мая 2019

почему вы хотите добавить три новых столбца? Почему бы вам не создать один столбец с тремя значениями (1 для ведущих поставщиков, 2 для средних поставщиков и 3 для низких поставщиков)? Рассматривали ли вы частоту или целевое кодирование?

...