2015-05-26 21 views
13

Widziałem tę poprawkę2 kilka razy na SO, ale nie widziałem rozwiązania mojego konkretnego problemu;R reshape2 Brak funkcji agregacji: domyślnie do długości '

Posiadam taki zestaw danych;

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

Próbuję rzucić to do szerokiego formatu, który wygląda tak;

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

przy użyciu;

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

ale dane kończą się wyglądać jak coś takiego;

Student Exam1  Exam2 
Adam  0   0 
John  0   1 

z tym błędem;

Aggregation function missing: defaulting to length 

Wszelkie pomysły, dlaczego zmienia wszystkie te wartości na (0 lub 1)?

+1

Musisz podać kolumnę sekwencji. Ale na podstawie tego przykładu działa 'dcast (data, student ~ test, value.var = 'score')' Podaj przykład z duplikatami wierszy – akrun

+6

To nie jest błąd. To ostrzeżenie informujące, że skoro nie podałeś wartości 'fun.aggregate' (np.' Fun.aggregate = mean'), domyślnie zwraca ona długość, która jest liczbą wierszy. należących do tej kombinacji kategorii. Nie widzę "job_type" w Twoich przykładowych danych. Czy chcesz 'dcast (data, student ~ test, value.var = 'score')'? – eipi10

+2

Witam, mam podobny problem teraz i nie wiem jak to naprawić. Czy problem polegał na tym, że "value.var" było źle wpisane? – Bobesh

Odpowiedz

9

Dzięki @akrun, który wskazał go.

Cóż, istnieje duże prawdopodobieństwo, że dane mają duplikaty wierszy, które wyglądają albo tak:

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

Albo tak:

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

Kiedy oddasz to tak: dcast(data, student + class ~ test, value.var='score')