我试图根据两个条件在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"
如何使用这两个条件让程序运行?
再次感谢你!
答案 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)
这第二段代码不会给你一个错误,但它也不会给你正确的条件。