我有一个包含6列的数据框
dat<-data.frame(x1,x2,x3,x4,x5,x6)
现在,我需要构建两个与交互项相关联的额外列,x1*x2
和x3*x4*x5
如何在R中执行此操作。有些特殊注意事项,例如{{ 1}}是绝对的吗?
答案 0 :(得分:1)
我想函数model.matrix
完全符合您的要求。
例如,您可以拟合包含您感兴趣的变量和交互项的线性模型,然后从该拟合对象中提取模型矩阵
model.matrix(lm(drat ~ mpg * cyl + disp * hp * wt, data = mtcars))
因素需要明确编码为因子,请在下面找到一个例子
mtcars$cyl <- factor(mtcars$cyl)
model.matrix(lm(drat ~ mpg * cyl + disp * hp * wt, data = mtcars))
用于因子的默认对比是治疗编码。您可以使用下面的命令轻松地将其更改为总和编码(或其他编码:?contr.sum
)
contrasts(mtcars$cyl) <- contr.sum