具有多个条件的R条件回归

时间:2017-02-28 03:38:50

标签: r regression linear-regression

我试图根据两个条件在R中运行回归。我的数据包含年份和另一个分类的二进制变量。我只能使用1个条件才能使回归正常运行:

# now time for the millions of OLS
# format: OLSABCD where ABCD are binary for the values of MSA/UA and years
# A = 1 if MSA, 0 if UA
# B = 1 if 2010
# C = 1 if 2000
# D = 1 if 1990

OLS1000<-summary(lm(lnrank ~ lnpop, data = subset(df, msa==1)))
OLS1000

但是,我无法弄清楚如何同时使用MSA / UA分类来处理年份变量。我试过了:

OLS1100<-summary(lm(lnrank ~ lnpop, data = subset(df, msa==1, df$2010==1)))
OLS1100

但它返回错误:

Error: unexpected numeric constant in "OLS1100<-summary(lm(lnrank ~ lnpop,   
data = subset(df, msa==1, df$2010"

如何使用这两个条件让程序运行?

再次感谢你!

2 个答案:

答案 0 :(得分:1)

问题是:

df$2010

如果您的数据确实有一个名为2010的列,那么您需要围绕它进行反引号:

df$`2010`

在你的子集中,不要指定df两次:

subset(df, msa == 1, `2010` == 1)

通常,如果列名不以数字开头,则更好。最好不要命名数据框df,因为这是一个函数名。

答案 1 :(得分:0)

@neilfws指出“数字作为列名称问题”,但您的代码中确实存在另一个问题。

subset()的第三个参数实际上是为select =保留的,它允许您选择要包含(或排除)的列。所以正确的语法应该是:

subset(df, msa == 1 & `2010` == 1)

而不是

subset(df, msa == 1, `2010` == 1)

这第二段代码不会给你一个错误,但它也不会给你正确的条件。