2015-05-26 12 views
13

Ho visto questo reshape2 diverse volte su SO ma non ho visto una soluzione al mio particolare problema;R reshape2 'Funzione di aggregazione mancante: defaulting alla lunghezza'

Ho un set di dati come questo;

head(data) 
student test score 
Adam  Exam1  80 
Adam  Exam2  90 
John  Exam1  70 
John  Exam2  60 

Sto provando a trasmettere questo in un ampio formato che assomiglia a questo;

Student Exam1 Exam2 ........ ExamX 
Adam   80  90 
John   70  60 

utilizzo;

dcast(data,student~test,value.var='score') 

ma i dati risultano simili a questo;

Student Exam1  Exam2 
Adam  0   0 
John  0   1 

con questo errore;

Aggregation function missing: defaulting to length 

Qualche idea sul perché sta cambiando tutti questi valori su a (0 o 1)?

+1

È necessario fornire una colonna di sequenza. Ma, in base all'esempio, funziona anche con 'dcast (data, studente ~ test, value.var = 'punteggio')' Fornisci un esempio con righe duplicate – akrun

+6

Non si tratta di un errore. È un avvertimento per farti sapere che dato che non hai fornito un valore per 'fun.aggregate' (es.' Fun.aggregate = mean'), per impostazione predefinita restituisce la lunghezza, che è un conteggio del numero di righe cadere in quella combinazione di categorie. Non vedo 'job_type' nei dati di esempio. Volevi 'dcast (data, studente ~ test, value.var = 'punteggio')'? – eipi10

+2

Ciao, ho un problema simile ora, e non so come risolvere questo problema. Il problema era che "value.var" non era stato digitato correttamente? – Bobesh

risposta

9

Grazie a @akrun che lo ha indicato.

Beh, c'è un'alta probabilità che i dati ha duplicato riga che sembra sia così:

student test score 
Adam  Exam1  80 
Adam  Exam1  85 
Adam  Exam2  90 
John  Exam1  70 
John  Exam2  60 

O come questa:

student class  test score 
Adam  Biology Exam1  80 
Adam  Theology Exam1  85 
Adam  Theology Exam2  90 
John  Biology Exam1  70 
John  Theology Exam2  60 

Quando lanci in questo modo: dcast(data, student + class ~ test, value.var='score')

Problemi correlati