2011-10-18 15 views
9

sono tornato statistiche sui miei dati utilizzando il comando tabella come ad esempio:Come convertire i nomi delle righe di tabella in un vettore

subject<-c(4,4,2,2,3,3) 
correct<-c(0,1,1,1,0,0) 
test<-data.frame(subject,correct) 
freq_test<-head(table(test$subject,test$correct)) 

Questo restituisce una tabella che assomiglia a questo

0 1 

    2 0 2 

    3 2 0 

    4 1 1 

Ecco ottimo, ma il problema è che mi piacerebbe che la prima colonna fosse un vettore piuttosto che row.names (così posso codificarlo correttamente come "soggetto"). C'è un modo per far funzionare questa colonna in questo modo?

risposta

11

Basta fare una nuova cornice di dati con i nomi di riga di freq_test come prima colonna:

> df<-data.frame(as.numeric(rownames(freq_test)),freq_test) 
> colnames(df)[1]="subject" 
> df 
    subject X0 X1 
2  2 0 2 
3  3 2 0 
4  4 1 1 
> 

Naturalmente, è possibile rinominare X0 e X1 a quello che vuoi modificando colnames(df) come sopra.

+0

grazie! sapeva che doveva essere qualcosa di semplice – FGiorlando

+0

Prego. Se la risposta ti ha aiutato, per favore considera di accettarla (facendo clic sul segno di spunta sotto i totali upvote/downvote per la mia risposta). –

1

Se si desidera che i dati in formato "lungo" (utile per alcuni modelli e la stampa, e soprattutto quando le tabelle sono più complicate), il metodo della tabella per la funzione generica as.data.frame si prenderà cura di questo per voi:

> as.data.frame(table(test)) 
    subject correct Freq 
1  2  0 0 
2  3  0 2 
3  4  0 1 
4  2  1 2 
5  3  1 0 
6  4  1 1 
+0

utile, ma non proprio quello di cui ho bisogno in quanto i dati riepilogati erano il punto di ottenere la tabella(). – FGiorlando

0

penso che si dovrebbe avere utilizzato il metodo standard di costruzione di un data.frame, che è con name = valori coppie:

test <- data.frame(subject=subject, correct=correct) 

la prima subject verrà interpretato come un nome da citare e il secondo subject sarà essere interpretato .... vale a dire, gli ambienti chiusi verranno ricercati per un oggetto denominato subject e il suo valore verrà assegnato alla colonna "oggetto" di "test".

+0

Tuttavia, non penso che questo aiuti quando viene usato head (table (test)) poiché questo è quando vengono creati i nomi row.names – FGiorlando

Problemi correlati