2011-06-22 14 views
23

¿Por qué un modelo de matriz no necesariamente tiene el mismo número de filas que el marco de datos?model.matrix genera menos filas que el data.frame original

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

Intenté buscar pistas en la documentación pero no pude encontrar nada. Gracias por adelantado.

Respuesta

26

Bueno, si una fila AN tiene en él, que es la fila (por defecto) eliminado:

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 

Este comportamiento se controla mediante la opción "na.action":

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

Desgraciadamente no funcionó para mí Reemplazó las NA con 0 en su lugar. –

+0

Utilicé na.action = "na.pass" y luego en la matriz resultante sustituí las NA por 0. De esta manera excluye esas muestras de todas las variables ficticias creadas por los contrastes. – Llopis

Cuestiones relacionadas