は、この場合のために、いくつかの異なるオプションがあります。他の人はapply
関数について言及していますが、apply
は行列上で動作し、与えられたデータフレームがあれば、関数を適用する前に行列に変換します。サンプルデータフレームではこれは問題にはなりませんが(最初に変換するのは非効率です)、数値以外の列を含むデータフレームで使用すると問題が発生する可能性があります。あなたは上記の機能を変更することにより、各列にしたい方の関数を計算することができます
> 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
:
ベターは、リスト上で直接動作します(データフレームは、リストの形式である)sapply
を使用することです。
このようなことを行う機能を備えたdplyrパッケージを、より読みやすい形で簡単な方法でより複雑なケースに適応させることができます。
> 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
または 'sapply(df、summary)'。範囲を取得するには、 'sapply(df、range)'を使います。 –
ニース、私は 'サプリー'がそれをしたことを知らなかった:) – Sotos
または単に要約(df)。要約はすべての列に適用されます。 – Dave2e