2011-06-22 1 views
23

モデル・マトリックスは必ずしもデータ・フレームと同じ行数を持たないのですか?model.matrixは元のdata.frameよりも少ない数の行を生成します

mergem = model.matrix(as.formula(paste(response, '~ .')), data=mergef) 
dim(mergef) 
# [1] 115562  71 
dim(mergem) 
# [1] 66786 973 

ドキュメントのヒントを探してみましたが、何も見つかりませんでした。前もって感謝します。

答えて

26

行はそれでのNAを持っている場合まあ、その行がある(デフォルトでは)削除:

d <- data.frame(x=c(1,1,2), y=c(2,2,4), z=c(4,NA,8)) 
m <- model.matrix(x ~ ., data=d) 

nrow(d) # 3 
nrow(m) # 2 

この動作はオプション "na.action" によって制御されます。生憎

options(na.action="na.fail") 
m <- model.matrix(x ~ ., data=d) # Error: missing values in object 
+1

、私のために働かなかった。 NAを0に置き換えました。 –

+0

私はna.action = "na.pass"を使用し、結果として得られた行列でNAsを0に設定しました。この方法では、作成されたすべての対比ダミー変数からそれらのサンプルを除外します。 – Llopis

関連する問題