Czy ktoś może mi pomóc uzyskać różnicę między kruszywa i ddply z poniższym przykładzie:różnica między ddply i kruszywo
Ramka danych:
mydat <- data.frame(first = rpois(10,10), second = rpois(10,10),
third = rpois(10,10), group = c(rep("a",5),rep("b",5)))
Zastosowanie kruszywa zastosować funkcję do części ramka danych podzielone przez współczynnik:
aggregate(mydat[,1:3], by=list(mydat$group), mean)
Group.1 first second third
1 a 8.8 8.8 10.2
2 b 6.8 9.4 13.4
spróbuje użyć kruszywo do innej funkcji (zwraca komunikat o błędzie):
aggregate(mydat[,1:3], by=list(mydat$group), function(u) cor(u$first,u$second))
Error in u$second : $ operator is invalid for atomic vectors
Teraz, spróbuj to samo z ddply (pakiet plyr):
ddply(mydat, .(group), function(u) cor(u$first,u$second))
group V1
1 a -0.5083042
2 b -0.6329968
Wszystkie porady, linki, krytyka są wysoko cenione.
myślę, że wykazał różnicę. Czy jest tu pytanie? –
Cóż, chociaż widzę, że jest różnica, nie rozumiem, dlaczego tak jest. Co w tych funkcjach powoduje różnicę, którą pokazuję? – skip
Część 5 http://programming-r-pro-bro.blogspot.com/2012/12/r-faqs-for-fresh-starters.html zawiera niesamowite wyjaśnienie z przykładowym kodem. Zasadniczo, ddply pozwala na użycie RÓŻNYCH funkcji dla każdej zmiennej, podczas gdy agregacja zmusza do użycia tej samej funkcji dla wszystkich kolumn, które przechodzą. –