从数据框创建设计(数字)矩阵

时间:2015-02-26 21:27:04

标签: r

某些包(riblockTools)要求输入矩阵的所有列都是数字。我一直在使用以下黑客,但我想知道是否有更直接的路线:首先,我运行包含变量的回归,但我喜欢它们(因素,字符,数字等),然后我提取设计矩阵,格式正确(截距除外)。 lm如何制作设计矩阵?我可以制作那个矩阵而不会遇到运行回归的麻烦吗?

N <- 1000
gender <- sample(c("M", "F"), N, replace=TRUE)
age <- sample(18:65, N, replace = TRUE)
lincome <- rnorm(N, 10, 3)
party <- sample(c("D", "R", "I"), N, prob=c(.45, .35,.2), replace=TRUE)
education <- sample(10:20, N, replace=TRUE)

df <- data.frame(gender, age, lincome, party, education)
fit <- lm(1:N ~ gender + age + lincome + party + education, data=df)
mat <- model.matrix(fit)[,-1]

head(df)
head(mat)

这个解决方案运行正常,但感觉很烦。还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

请参阅https://stackoverflow.com/a/5048727/4530610

在你的情况下,它将是:

mat <- model.matrix( ~ gender + age + lincome + party + education, data=df)[,-1]