2017-02-28 35 views
0

Rの回帰を2つの条件に基づいて実行しようとしています。私のデータには、年と別の分類のバイナリ変数があります。私も今年の変数で動作するMSA/UAの分類の両方を取得する方法を見つけ出すことはできませんしかし複数の条件付き条件付き回帰

# 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 

:私は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

ありがとうございました!また、いくつかの変数をログ形式に変更し、本質的に2つの異なる行列から呼び出すときに、新しい行列を作ったことに気付きました。 – badenduser

0

@neilfwsは "数値として列名の問題"を指摘しましたが、実際にはコードに別の問題があります。

subset()の3番目の引数は、実際にはselect =のために予約されています。これにより、含める(または除外する)列を選択できます。だから、正しい構文は次のようになります。

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

代わりの

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

この第二のコードはあなたにエラーを与えていないだろうが、それはまた、あなたの右の条件を明らかにしませんでした。