2017-01-17 5 views
1

У меня есть большой кадр данных, с которыми я бегу это:R dcast: Как выполнить вычисления значения dcast?

dcast(mydata, People ~ Categories, value.var = "Answer Count", **sum**) 

и это результат:

People category1 category2 
Marge 3,648 6,402 
Homer 3,586 6,684 
Bart 3,469 7,119 
Lisa 4,045 6,758 
Maggie 2,847 5,748 

Кроме того, это:

dcast(mydata, People ~ Categories, value.var = "Answer Count", **length**) 

делает это:

People category1 category2 
Marge 2,531 4,516 
Homer 2,535 4,512 
Bart 2,542 4,563 
Lisa 2,501 4,488 
Maggie 2,517 4,513 

По сути, я хочу сделать это:

dcast(mydata, People ~ Categories, value.var = "Answer Count", **sum/length/6**) 

и получить эти значения:

People category1 category2 
Marge 0.240221256 0.236271036 
Homer 0.235765943 0.246897163 
Bart 0.227445581 0.260026298 
Lisa 0.269558843 0.250965538 
Maggie 0.188518077 0.212275648 

Я попытался манипулируя fun.aggregate в качестве аргумента, но я не уверен, что это правильный путь, или я дон Я не знаю, что делаю. Может ли кто-нибудь помочь мне с этим, пожалуйста? (Sidenote:. Этот пример имеет две категории реальные данные имеют> 40.)

ответ

1

Мы можем использовать вызов анонимной функции в fun.aggregate

library(reshape2) 
dcast(mydata, People ~ Categories, 
    value.var = "Answer Count", fun.aggregate = function(x) sum(x)/length(x)) 
+1

Я был так близко. Большое спасибо акрун! :) –