Es gibt ein paar verschiedene Optionen für diesen Fall. Andere haben die apply
-Funktion erwähnt, aber apply
funktioniert auf einer Matrix und wenn ein Datenrahmen angegeben wird, wird sie zuerst in eine Matrix umgewandelt, bevor die Funktion angewendet wird. Für den Beispieldatenrahmen ist dies kein Problem (aber es ist ineffizient, zuerst zu konvertieren), aber es könnte Probleme verursachen, wenn es mit einem Datenrahmen verwendet wird, der nicht-numerische Spalten enthält.
Besser ist sapply
zu verwenden, die (und ein Datenrahmen ist eine Form einer Liste) direkt auf den Listen funktioniert:
> sapply(mtcars, function(x) c(mean(x), median(x), sd(x)))
mpg cyl disp hp drat wt qsec
[1,] 20.090625 6.187500 230.7219 146.68750 3.5965625 3.2172500 17.848750
[2,] 19.200000 6.000000 196.3000 123.00000 3.6950000 3.3250000 17.710000
[3,] 6.026948 1.785922 123.9387 68.56287 0.5346787 0.9784574 1.786943
vs am gear carb
[1,] 0.4375000 0.4062500 3.6875000 2.8125
[2,] 0.0000000 0.0000000 4.0000000 2.0000
[3,] 0.5040161 0.4989909 0.7378041 1.6152
Sie können Sie auf jede Spalte berechnen je nachdem, welche Funktionen möchten, indem Sie die Funktion oben zu verändern.
Sie sollten auch das dplyr-Paket in Betracht ziehen, das Funktionen wie diese in einer Form hat, die etwas lesbarer ist und sich komplizierteren Fällen auf einfachere Weise anpasst.
> library(dplyr)
> mtcars %>% summarise_each(funs(mean,median,sd))
mpg_mean cyl_mean disp_mean hp_mean drat_mean wt_mean qsec_mean vs_mean
1 20.09062 6.1875 230.7219 146.6875 3.596563 3.21725 17.84875 0.4375
am_mean gear_mean carb_mean mpg_median cyl_median disp_median hp_median
1 0.40625 3.6875 2.8125 19.2 6 196.3 123
drat_median wt_median qsec_median vs_median am_median gear_median
1 3.695 3.325 17.71 0 0 4
carb_median mpg_sd cyl_sd disp_sd hp_sd drat_sd wt_sd
1 2 6.026948 1.785922 123.9387 68.56287 0.5346787 0.9784574
qsec_sd vs_sd am_sd gear_sd carb_sd
1 1.786943 0.5040161 0.4989909 0.7378041 1.6152
> mtcars %>% summarise_each(funs(mean,median,sd)) %>%
matrix(nrow=ncol(mtcars), dimnames=list(names(mtcars), c('Mean','Median','SD')))
Mean Median SD
mpg 20.09062 19.2 6.026948
cyl 6.1875 6 1.785922
disp 230.7219 196.3 123.9387
hp 146.6875 123 68.56287
drat 3.596563 3.695 0.5346787
wt 3.21725 3.325 0.9784574
qsec 17.84875 17.71 1.786943
vs 0.4375 0 0.5040161
am 0.40625 0 0.4989909
gear 3.6875 4 0.7378041
carb 2.8125 2 1.6152
Oder 'sapply (df, Zusammenfassung)'. Um die Entfernung zu erhalten, benutze 'sapply (df, range)'. –
Schön, ich wusste nicht, dass 'sapply' das tat :) – Sotos
Oder nur Zusammenfassung (df). Die Zusammenfassung bezieht sich auf alle Spalten. – Dave2e