如何方便地在R中添加一大组回归器?
我必须向回归中添加大约30个虚拟变量 如果我的变量名为如何方便地在R中添加一大组回归器?,r,regression,R,Regression,我必须向回归中添加大约30个虚拟变量 如果我的变量名为dummy1-dummy30,我会在STATA中用星号通配符表示。这将是简单的回归y dummy*,STATA将添加所有以“dummy”开头的变量 有没有人能在[R]中提示我一个类似的方便程序,它阻止我写出30个变量名?您有两个选择。子集adata.frame仅包含伪*变量和因变量。在这种情况下,您可以调用lm(dep~,data=your.data)。dot参数将假定您试图使用除dep之外的所有变量作为预测值。 要将data.frame中的
dummy1
-dummy30
,我会在STATA
中用星号通配符表示。这将是简单的回归y dummy*
,STATA
将添加所有以“dummy”开头的变量
有没有人能在
[R]
中提示我一个类似的方便程序,它阻止我写出30个变量名?您有两个选择。子集adata.frame
仅包含伪*变量和因变量。在这种情况下,您可以调用lm(dep~,data=your.data)
。dot参数将假定您试图使用除dep
之外的所有变量作为预测值。
要将data.frame
中的dep
和预测器子集,可以使用your.data[grepl(“dep | dummy”,name(your.data)),]
第二个选项是使用粘贴构造公式参数
formula(paste("dep ~", paste("dummy", 1:10, sep = "", collapse = "+")))
函数
reformate
是基于字符串创建公式的正确选项
示例数据帧:
set.seed(1)
dat <- data.frame(y = rnorm(10),
dummy1 = rnorm(10),
dummy2 = rnorm(10),
dummy3 = rnorm(10),
other = rnorm(10))
此公式可用于lm
:
lm(form, dat)
# Call:
# lm(formula = form, data = dat)
#
# Coefficients:
# (Intercept) dummy1 dummy2 dummy3
# 0.04785 0.09323 -0.63404 -0.19547
y~,data=
谢谢,但是如果我想让它更灵活呢?也就是说,我知道数据帧中有K个虚拟变量,但它们是分散的。我必须指定不需要的精确列数。如果你模拟编码因子变量,你应该知道R回归函数可以为你做到这一点。你可以使用正则表达式对你想要的任何变量进行子集(然后使用y~。
公式)。这是一个很好的观点,@Roland,让R包含我的变量作为因子。如果我没记错的话:as.factor()
。
lm(form, dat)
# Call:
# lm(formula = form, data = dat)
#
# Coefficients:
# (Intercept) dummy1 dummy2 dummy3
# 0.04785 0.09323 -0.63404 -0.19547