2011-12-07 8 views
5

tengo 3 variables categóricasCombinar múltiples variables categóricas en una variable ficticia

agegroup{<20,20-30,>03}  
disease.level{0,1,2}, 
performance{<60, >=60} 

y me gustaría combinarlos en una variable dicotómica con 3x3x2 niveles. ¿Hay alguna manera rápida de hacer esto? Mis conjuntos de datos originales tienen alrededor de 10 variables con múltiples niveles en cada una.

Básicamente estoy pidiendo exactamente lo contrario de esta pregunta Create new dummy variable columns from categorical variable

Muchas gracias CE

+5

'interaction' seguido de' model.matrix'? –

+0

podría dar un ejemplo? – aatrujillob

+0

Quizás @BenBolker debería publicar eso como una respuesta ...? – joran

Respuesta

5

no estoy seguro de si por "variable ficticia" que desea 0/1 variables indicadoras (en que tendría 18 variables ficticias) o si desea un factor único con 18 niveles. Suena como el último. (En realidad, paste funcionaría así como interaction, aunque interaction es un poco más auto-descripción.)

> ff <- expand.grid(agegroup=factor(c("<20","20-30",">30")), 
     disease.level=factor(0:2),performance=factor(c("<60",">=60"))) 
> combfac <- with(ff,interaction(agegroup,disease.level,performance)) 
> combfac 
[1] <20.0.<60 20-30.0.<60 >30.0.<60 <20.1.<60 20-30.1.<60 
[6] >30.1.<60 <20.2.<60 20-30.2.<60 >30.2.<60 <20.0.>=60 
[11] 20-30.0.>=60 >30.0.>=60 <20.1.>=60 20-30.1.>=60 >30.1.>=60 
[16] <20.2.>=60 20-30.2.>=60 >30.2.>=60 
18 Levels: <20.0.<60 20-30.0.<60 >30.0.<60 <20.1.<60 20-30.1.<60 ... >30.2.>=60 

Si desea utilizar todos las variables en la trama de datos para crear la interacción puede utilizar do.call(interaction,ff).

Si desea las variables ficticias, haga model.matrix(~combfac-1) para obtenerlas.

+2

Relativo a 'pegar',' interacción' también puede ser bueno ya que produce niveles para todas las combinaciones posibles de los dos factores, incluso aquellos que no aparecen en los datos actuales. –

Cuestiones relacionadas