2011-12-07 15 views
5

Ho 3 variabili categorialiCombinare più variabili categoriali in una variabile dicotomica

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

e vorrei combinarle in una variabile dicotomica con 3x3x2 livelli. C'è un modo veloce per fare questo? I miei set di dati originali hanno circa 10 variabili con livelli multipli in ciascuna.

Fondamentalmente io chiedo l'esatto opposto di questa domanda Create new dummy variable columns from categorical variable

Grazie mille CE

+5

'interazione' seguita da' model.matrix'? –

+0

potresti fornire un esempio? – aatrujillob

+0

Forse @BenBolker dovrebbe pubblicarlo come risposta ...? – joran

risposta

5

io non sono sicuro se da "variabile dummy" che si desidera 0/1 variabili indicatore (in che avresti 18 variabili dummy) o se vuoi un singolo fattore con 18 livelli. Sembra il secondo. (In realtà, paste avrebbe funzionato così come interaction, anche se interaction è un po 'più di auto-descrizione.)

> 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 

Se si desidera utilizzare tutti le variabili nella cornice di dati per creare l'interazione è possibile utilizzare do.call(interaction,ff).

Se si desidera che le variabili dummy si farebbe model.matrix(~combfac-1) per ottenerle.

+2

Relativo a 'incolla',' interazione' può anche essere bello in quanto produce livelli per tutte le possibili combinazioni dei due fattori, anche quelli che non compaiono nei dati presenti. –

Problemi correlati