Czy mogę używać funkcji aggregate()
z większą liczbą funkcji w taki sposób, że agregacje są przechowywane jako oddzielne kolumny, a nie jako część macierzy? Chcę mieć ramkę danych z kolumnami Group.1, cyl.1, cyl.2
, a nie Group.1, cyl
.Aggregate() z większą liczbą funkcji -
# Only one function
> aggdata <-aggregate(mtcars["cyl"], by=list(vs), FUN=mean, na.rm=TRUE)
> aggdata
Group.1 cyl
1 0 7.444444
2 1 4.571429
> str(aggdata)
'data.frame': 2 obs. of 2 variables:
$ Group.1: num 0 1
$ cyl : num 7.44 4.57
>
# Two functions
> aggdata <-aggregate(mtcars["cyl"], by=list(cyl), FUN=function(x) c(length(x),mean(x)))
> aggdata
Group.1 cyl.1 cyl.2
1 4 11 4
2 6 7 6
3 8 14 8
> str(aggdata)
'data.frame': 3 obs. of 2 variables:
$ Group.1: num 4 6 8
$ cyl : num [1:3, 1:2] 11 7 14 4 6 8
> aggdata$cyl
[,1] [,2]
[1,] 11 4
[2,] 7 6
[3,] 14 8
+1. Pomyślałem o udostępnieniu tej opcji, ponieważ podoba mi się jej składnia o wiele lepiej, ale nie odnosi się ona do faktycznego pytania o to, co zrobić z wyjściem "agregatu", z którym wcześniej się spotkałem i jest nieco niezręczne w obsłudze . – A5C1D2H2I1M1N2O1R2T1
@AnandaMahto Zgadzam się, że to nie odpowiada na pytanie (a jeśli chodzi o pytanie, to twoja jest odpowiedzią na to pytanie), ale zasadniczo myślę, że OP zadawał niewłaściwe pytanie :) – eddi
Właśnie znalazłem [źródło mojego odpowiedź] (http://stackoverflow.com/a/14759569/1270695). Jest kilka innych pytań podobnych do tego, ale to właśnie tam nauczyłem się podejścia 'do.call (data.frame, ...)'. – A5C1D2H2I1M1N2O1R2T1