在R中,有没有一种方法可以根据条件将一个分类变量分为三个?

时间:2019-05-12 18:29:19

标签: r machine-learning random-forest

我正在尝试针对某些零售商品的性能创建随机森林机器学习算法。我正在为此使用R Studio。在我的数据集中,我混合使用了数字变量和分类变量。我的问题是我的分类变量“ Supplier”中有53个以上的因素(准确地说是166个),所以我使用的randomForest包不允许我使用。数据集如下所示:

月度供应商商品名称单位已售出TY单位已售出价格类别编号商店

我相信“ Supplier”变量对模型将非常重要。为了使53个因素的分类变量不受限制,我想将“ Supplier”列分为三列。但是,我希望第一列在整个数据集中按“ UnitsSold”包含前33%的供应商。第二列将是“ UnitsSold”的中间供应商的33%,第三列是“ UnitsSold”的底部33%的供应商。因此,对于三列,成品看起来像这样:

TopSupplier MidSupplier LowSupplier Month Year ItemName ...
SupplierA其他Other
其他供应商B其他
其他其他供应商C

有关如何实现此目标的任何提示或建议?

我已经尝试过ifelse语句,但似乎无法弄清楚如何在整个数据集中对供应商进行排名,然后将其作为影响供应商进入哪一列的因素。

我希望最终结果能够模仿上面包含的第二张表。 “供应商”变量将分为三列。第一列将仅包含构成整个数据集中“ UnitsSold”的前33%的供应商。第二列为中间33%,第三列为底部33%。

1 个答案:

答案 0 :(得分:0)

为什么要添加三个新列?为什么不创建一个包含三个值的列(1个用于顶级供应商,2个用于中级供应商,3个用于低级供应商)?您是否考虑过频率编码或目标编码?