2013-02-21 14 views
5

私はgenderという変数をバイナリカテゴリ値 "female"/"male"で持っています。その型を整数0/1に変更して、回帰分析に使用できるようにしたいと思います。つまり私は、すなわち2レベルの係数を0/1のバイナリ値に変換するR

、私は要素を照会するとき、私はint型の値1を得るように、性別変数の型を変換したい値「女性」と1と0の

> str(gender) 
gender : Factor w/ 2 levels "female","male": 1 1 1 0 0 0 0 1 1 0 ... 
> gender[1] 
[1] female 

にマッピングする「男性」をしたいです

> gender[1] 
[1] 1 
+0

ようこそ!おそらく、あなたが試したことをよりよく示すはずです。 – agstudy

+3

'gender < - ifelse(gender ==" female "、1,0)'についてはどうですか? – r2d2oid

答えて

9

因子に変換し、残りの部分をRが処理するようにします。あなたはそれを注意し、Dasonの答え@に加えたようR.

+4

+1実際の問題に対処するためにはるかに良い、正確な問題ではない! – mnel

13

を使用している場合、明示的にダミー変数を作成するの世話をする必要はありません...

test <- c("male","female") 

as.factor(test) 
#[1] male female 
#Levels: female male 

...参照群としてfemaleを返します。 (1)と比較群(2)のようにmale

はUSI、@mariusノートとして

factor(test,levels=c("male","female")) 
#[1] male female 
#Levels: male female 

...あなたがする必要があるだろう、それを他の方法をスピンしますNG contrastsは、回帰モデルで作業する方法を紹介します:

contrasts(as.factor(test)) 
#  male 
#female 0 
#male  1 

contrasts(factor(test,levels=c("male","female"))) 
#  female 
#male  0 
#female  1 
+2

また、回帰モデルでどのようにレベルが扱われるかをさらに明確に見るために、 'contrasts(factor(test))' – Marius

6

あなたが本当のためにこれをやっている場合、あなたは絶対にDasonのアドバイス@従ってください。私はあなたが(this questionのおかげで)クラスを教え、インジケータ変数を発揮したいしていると仮定するつもりです:あなたがインターセプトをしたくない場合は、代わりにmodel.matrix(~gender -1 , data=dat)を使用

dat <- data.frame(gender=sample(c("male", "female"), 10, replace=TRUE)) 

model.matrix(~gender, data=dat) 

    (Intercept) gendermale 
1   1   1 
2   1   0 
3   1   1 
4   1   0 
5   1   1 
6   1   1 
7   1   1 
8   1   0 
9   1   0 
10   1   1 
attr(,"assign") 
[1] 0 1 
attr(,"contrasts") 
attr(,"contrasts")$gender 
[1] "contr.treatment" 

関連する問題