如何获得整个矩阵,数组或数据帧的均值,中位数和其他统计数据?

use*_*760 30 arrays r matrix dataframe r-faq

我知道这是一个基本问题,但由于一些奇怪的原因,我无法找到答案.

我应该如何在整个数组,矩阵或数据帧上应用基本统计函数,如均值,中位数等,以获得唯一答案,而不是行或列上的向量

jor*_*ran 24

由于这有点相当,我将更全面地对待它,包括'等' 除了mean和之外的一块median.

  1. 对于一个矩阵或数组,作为其他所指出的,mean并且median将返回一个值.但是,var将计算二维矩阵的列之间的协方差.有趣的是,对于多维数组,var返回返回单个值.sd在二维矩阵上可以使用,但不推荐使用,返回列的标准偏差.更好的是,mad在二维矩阵多维数组上返回单个值.如果返回单个值,最安全的路径是先强制使用as.vector().玩得开心吗?

  2. 对于a 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.
Run Code Online (Sandbox Code Playgroud)


mat*_*fee 14

默认情况下,meanmedian等工作在整个阵列或矩阵.

例如:

# array:
m <- array(runif(100),dim=c(10,10))
mean(m) # returns *one* value.

# matrix:
mean(as.matrix(m)) # same as before
Run Code Online (Sandbox Code Playgroud)

对于数据框架,您可以先将它们强制转换为矩阵(原因是默认情况下这是因为数据框可以包含带有字符串的列,而您不能这样做):

# data frame
mdf <- as.data.frame(m)
# mean(mdf) returns column means
mean( as.matrix(mdf) ) # one value.
Run Code Online (Sandbox Code Playgroud)

在强制转换为矩阵之前,请注意您的数据框包含所有数字列.或排除非数字的.