【问题标题】:R Conditional Regression with Multiple Conditions具有多个条件的 R 条件回归
【发布时间】:2017-02-28 03:38:49
【问题描述】:

我正在尝试基于两个条件在 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

但它返回错误:

错误:“OLS1100 数据 = 子集(df,msa==1,df$2010"

如何让程序同时利用这两种条件运行?

再次感谢您!

【问题讨论】:

    标签: r regression linear-regression


    【解决方案1】:

    问题是:

    df$2010
    

    如果您的数据确实有一个名为 2010 的列,那么您需要在它周围加上反引号:

    df$`2010`
    

    并且在您的子集中,不要指定 df 两次:

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

    一般来说,列名最好不以数字开头。最好不要将数据帧命名为df,因为这是一个函数名。

    【讨论】:

    • 谢谢!此外,当我将一些变量更改为对数形式时,我意识到我创建了一个新矩阵,并且本质上是从两个不同的矩阵调用。
    【解决方案2】:

    @neilfws 指出了“数字作为列名的问题”,但实际上您的代码中还有另一个问题。

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

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

    而不是

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

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

    【讨论】:

      猜你喜欢
      • 2016-09-15
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-04
      • 1970-01-01
      • 2020-10-19
      • 1970-01-01
      相关资源
      最近更新 更多