2017-02-28 56 views
0

我想根據兩個條件在R中運行迴歸。我的數據有兩個年份和另一個分類的二進制變量。R多條件條件迴歸

# 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分類與今年變量以及工作:雖然只有使用1個條件我可以迴歸到正常運行。我曾嘗試:

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" 

我如何才能讓程序運行使用兩個條件?

再次感謝您!

回答

1

的問題是:

df$2010 

如果你的數據真的有一欄名爲2010,那麼你就需要反引號周圍:

df$`2010` 

而在你的子集,不指定DF兩次:

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

一般來說,如果列名不以數字開頭,那就更好了。最好不要命名數據幀df,因爲這是一個函數名。

+0

謝謝!另外,我意識到當我將一些變量轉換爲對數形式時,我創建了一個新的矩陣,實質上是從兩個不同的矩陣調用。 – badenduser

0

@neilfws指出「數字作爲列名問題」,但實際上在您的代碼中存在另一個問題。

subset()的第三個參數實際上是爲select =保留的,它允許您選擇要包含(或排除)的列。所以,正確的語法應爲:的

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

代替

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

這第二個代碼不會給你一個錯誤,但它也不會給你正確的狀態。