我希望这个问题不是主题。 我知道如何在R中编写一个虚拟变量,但是,我想知道我是否可以在excel中创建它。假设我在颜色变量下有3种颜色(红色,蓝色,黄色)列表。 R会将此导入为3级的因子。
现在,如果我想在excel中执行此操作,我可以制作3个新的预测变量(而不是颜色,它们现在变为红色,蓝色和黄色)并在红色列中放置1(如果它是红色),否则为0,依此类推?或者R会继续将其解释为3个单独的因素,每个因素有2个级别吗?
答案 0 :(得分:2)
所以你在excel中手动创建三个虚拟列,并想将它们导入R?如果您稍后将这些列导入为数字而不是因子,则不会有任何问题。
好吧,我还是要提醒你,R可以通过model.matrix()
将因子编码到虚拟变量。所以永远不需要自己做这件事。在excel中使用带有“红色”,“蓝色”和“黄色”的单个列绝对可以,并将其导出为R作为因子。
colour <- gl(3,2,labels=c("red","blue","yellow"))
model.matrix(~ colour - 1)
# colourred colourblue colouryellow
#1 1 0 0
#2 1 0 0
#3 0 1 0
#4 0 1 0
#5 0 0 1
#6 0 0 1
另一个快速问题。使用
model.matrix
因子颜色和其他因子变量 - 如何将其合并到我的模型中?当我调用线性模型(例如)lm(response ~ predictor.1 + predictor.2 + colour)
时,它会自动调用虚拟变量,还是需要将model.matrix分配给向量?
model.matrix
是一个服务例程,用于模型拟合例程,如lm
,glm
等。用户可以简单地使用公式,然后在场景后面构建模型矩阵。因此,您甚至不需要自己获取模型矩阵。
对于高级用户,有时他可能想要使用内部拟合例程lm.fit
甚至.lm.fit
。阅读?lm.fit
了解这些例程。这些例程不接受模型公式,而是接受模型矩阵X
和响应向量y
。在这种情况下,用户有责任自己生成X
和y
。