これは基本的な質問であることは知っていますが、奇妙な理由で答えが見つかりません。
配列、行列、またはデータフレーム全体に平均、中央値などの基本的な統計関数を適用して、行または列のベクトルではなく一意の回答を取得する方法
これはかなり前に出てくるので、これをもう少し包括的に扱い、「など」を含めます。 mean
とmedian
に加えてピース。
マトリックスまたは配列の場合、他の人が述べたように、mean
とmedian
は単一の値を返します。ただし、var
は2次元行列の列間の共分散を計算します。興味深いことに、多次元配列の場合、var
は単一の値を返すことに戻ります。 2次元行列のsd
は機能しますが、廃止され、列の標準偏差が返されます。さらに良いことに、mad
は2次元の行列で単一の値を返しますand多次元配列。 want単一の値が返された場合、最も安全なルートは、最初にas.vector()
を使用して強制することです。まだ楽しんでいますか?
のために data.frame
、mean
は非推奨ですが、列に対して再度個別に機能します。 median
では、最初にベクターに強制するか、unlist
にする必要があります。前と同様に、var
は共分散を返し、sd
は非推奨になりましたが、列の標準偏差を返します。 mad
では、ベクトルまたはunlist
に強制する必要があります。一般的に、data.frame
すべての値に対して何かを実行する場合、通常は最初にunlist
します。
編集:最新ニュース():R 3.0.0では、mean.data.frameは廃止されました:
o mean() for data frames and sd() for data frames and matrices are
defunct.
デフォルトでは、mean
およびmedian
などは配列または行列全体で機能します。
例えば。:
# array:
m <- array(runif(100),dim=c(10,10))
mean(m) # returns *one* value.
# matrix:
mean(as.matrix(m)) # same as before
データフレームの場合、最初にそれらを行列に強制することができます(これが既定で列よりも大きい理由は、データフレームに文字列を含む列を含めることができるためです)
# data frame
mdf <- as.data.frame(m)
# mean(mdf) returns column means
mean( as.matrix(mdf) ) # one value.
マトリックスに強制する前に、データフレームにすべての数値列があることに注意してください。または、数値以外のものを除外します。
library dplyr
をinstall.packages( 'dplyr')経由で使用してから、
dataframe.mean <- dataframe %>%
summarise_all(mean) # replace for median