我有一个由数字和因子变量组成的data.frame,如下所示.

testFrame <- data.frame(First=sample(1:10, 20, replace=T),
           Second=sample(1:20, 20, replace=T), Third=sample(1:10, 20, replace=T),
           Fourth=rep(c("Alice","Bob","Charlie","David"), 5),
           Fifth=rep(c("Edward","Frank","Georgia","Hank","Isaac"),4))

我想建立一个matrix,将虚拟变量分配给因子,而不考虑数值变量.

model.matrix(~ First + Second + Third + Fourth + Fifth, data=testFrame)

正如预期的那样,当运行lm时,每个因素中都会有一个级别作为参考级别.然而,我想为所有因素的每一个级别构建一个matrix,其中包含一个虚拟/指标变量.我正在为glmnet建立这个矩阵,所以我不担心多重共线性.

有没有办法让model.matrix人为每一级的因素创建一个假人?

推荐答案

您需要重置因子变量的contrasts:

model.matrix(~ Fourth + Fifth, data=testFrame, 
        contrasts.arg=list(Fourth=contrasts(testFrame$Fourth, contrasts=F), 
                Fifth=contrasts(testFrame$Fifth, contrasts=F)))

或者,只需少输入一点,不使用专有名称:

model.matrix(~ Fourth + Fifth, data=testFrame, 
    contrasts.arg=list(Fourth=diag(nlevels(testFrame$Fourth)), 
            Fifth=diag(nlevels(testFrame$Fifth))))

R相关问答推荐

使用rlang s arg_match判断函数输入列表

管道末端运行功能

为什么st_join(ob1,ob2,left = True)返回具有比ob1更多功能的sf对象?

R Tidymodels textercipes-使用spacyR进行标记化-如何从生成的标记列表中删除标点符号

为什么当用osmdata映射R时会得到相邻状态?

从所有项的 struct 相同的两级列表中,将该第二级中的所有同名项绑定在一起

如何对2个列表元素的所有组合进行操作?

按列中显示的配对组估算NA值

提高圣彼得堡模拟的速度

如何显示准确的p值而不是<;0.001*?

名字的模糊匹配

整理ggmosaic图的标签

R-找出存在其他变量的各种大小的所有组合

我正在try 创建一个接近cos(X)的值的While循环,以便它在-或+1-E10范围内

如何使用grepl()在数据帧列表中 Select 特定字符串?

在GT()中的列之间添加空格

如何在访问之前下载的输入时同时上传和处理所有指定的shiny 输入?

conditionPanel不考虑以下条件

如何在R中的两列以上使用联合(&U)?

在使用ggplot2的情况下,如何在使用coord_trans函数的同时,根据未转换的坐标比来定位geom_瓷砖?