如何为R中具有2个以上值的所有分类变量创建适当的虚拟变量?

时间:2016-02-23 23:38:14

标签: r

我有一个包含1000行和21个变量的CSV数据集。在这21个中,9个是具有多于2个值的分类变量。如何在R中为它创建虚拟变量?我希望对这个数据集进行逻辑回归来解释它。我尝试使用因子和级别来转换它们,但我认为它最适合2个变量。我google了很多,发现许多网站在理论上解释了如何做到这一点但是没有提到的代码或功能来完全理解它。在这个网站上,我遇到了model.matrix()函数,R的虚拟包和dummy.code()函数。但是我仍然被卡住了,因为我刚刚被介绍给了R.对于长期的问题,这是我第一次问这里。提前谢谢!

1 个答案:

答案 0 :(得分:0)

在R中,大多数功能会在您发送分类值(性别,位置等)时识别并自动创建虚拟变量!例如,如果您正在进行线性回归,则可以执行lm(CSV_DATA)。如果分类值由实际数字表示,建议先将它们转换为字符串,以便R相应调整!

如果必须手动执行此过程,则可以创建一个循环来迭代数据集并填充其他变量。对于每个分类值,您将需要n-1个附加变量来将其表示为连续数据,n是变量包含的可能类别的数量。使用n-1个新变量,将每个变量分配给原始分类变量中的可能类别。在所有n-1个新变量中,最后一个类别将由0表示。例如,如果您尝试表示位置,并且您的数据可以是“纽约”,“LA”或“迈阿密”,您将创建两个(n-1)虚拟变量,为了便于解释,我们将给出它们名称city1和city2。如果原始变量等于“纽约”,你将设置city1 = 1和city2 = 0,如果它是“LA”你将设置city1 = 0和city2 = 1,如果你的原始值是“迈阿密”,你会设置city1 = 0和city2 = 0。

这样做的原因是因为它没有将任何一个类别排在数字上高于其他类别的任何一个类别,并且它使用最后一个类别作为“参考”,所有其余类别都与之比较!如前所述,如果您将变量表示为字符串,R将自动为您执行此操作。