web-dev-qa-db-ja.com

マトリックス、配列、またはデータフレーム全体の平均、中央値、およびその他の統計を取得する方法は?

これは基本的な質問であることは知っていますが、奇妙な理由で答えが見つかりません。

配列、行列、またはデータフレーム全体に平均、中央値などの基本的な統計関数を適用して、行または列のベクトルではなく一意の回答を取得する方法

30
user2760

これはかなり前に出てくるので、これをもう少し包括的に扱い、「など」を含めます。 meanmedianに加えてピース。

  1. マトリックスまたは配列の場合、他の人が述べたように、meanmedianは単一の値を返します。ただし、varは2次元行列の列間の共分散を計算します。興味深いことに、多次元配列の場合、varは単一の値を返すことに戻ります。 2次元行列のsdは機能しますが、廃止され、列の標準偏差が返されます。さらに良いことに、madは2次元の行列で単一の値を返しますand多次元配列。 want単一の値が返された場合、最も安全なルートは、最初にas.vector()を使用して強制することです。まだ楽しんでいますか?

  2. のために data.framemeanは非推奨ですが、列に対して再度個別に機能します。 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.
24
joran

デフォルトでは、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.

マトリックスに強制する前に、データフレームにすべての数値列があることに注意してください。または、数値以外のものを除外します。

14

library dplyrをinstall.packages( 'dplyr')経由で使用してから、

dataframe.mean <- dataframe %>%
  summarise_all(mean) # replace for median
0
tcratius