2

我有一个dm带有一些虚拟变量的数据框,d1, d2, d3。我想创建一个它们的列表dummies,并以简单的方式使用它,例如

lm(y~dummies+x,data=dm)

可能吗?

我找到了两种方法,但我不喜欢它们:

  1. 创建一个额外的数据框dummies

  2. 使用类似的东西formula(paste('y~',dummies,...)

第一种方法会吃掉内存,第二种方法很丑。有没有更好的办法?

4

1 回答 1

4

构造一个只包含感兴趣的变量的数据框,然后使用y ~ .,表示使用数据框中的所有列。

例如:

set.seed(1)
dm <- data.frame(
  y = rnorm(100),
  x = rnorm(100),
  d1 = sample(0:1, 100, replace=TRUE),
  d2 = sample(0:1, 100, replace=TRUE),
  d3 = sample(0:1, 100, replace=TRUE)
)

lm(y ~ ., dm)
lm(formula = y ~ ., data = dm)

Coefficients:
(Intercept)            x           d1           d2           d3  
  -0.089440    -0.012945    -0.006305     0.391576    -0.034225  
于 2012-08-27T05:48:50.533 回答