web-dev-qa-db-fra.com

Comment obtenir des statistiques sur la moyenne, la médiane et d'autres statistiques sur l'ensemble d'une matrice, d'un tableau ou d'une trame de données?

Je sais que c'est une question fondamentale, mais pour une raison étrange, je suis incapable de trouver une réponse.

Comment appliquer des fonctions statistiques de base telles que moyenne, médiane, etc. sur un tableau, une matrice ou une trame de données entière pour obtenir des réponses uniques et non un vecteur sur des lignes ou des colonnes

27
user2760

Comme cela revient un peu, je vais traiter cela de manière plus complète, pour inclure le "etc." pièce en plus de mean et median.

  1. Pour une matrice ou un tableau, comme d'autres l'ont indiqué, mean et median renverront une valeur unique. Cependant, var calculera les covariances entre les colonnes d'une matrice à deux dimensions. Fait intéressant, pour un tableau multidimensionnel, var revient à renvoyer une valeur unique. sd sur une matrice 2 -d fonctionnera, mais est déconseillé, renvoyant l'écart-type des colonnes. Mieux encore, mad renvoie une valeur unique sur une matrice à deux dimensions et / un tableau multidimensionnel. Si vous voulez une valeur unique est renvoyée, le chemin le plus sûr consiste à forcer en utilisant as.vector() en premier. S'amuser encore?

  2. Pour un data.frame, mean est obsolète, mais agira à nouveau sur les colonnes séparément. median nécessite que vous soyez d'abord contraint par un vecteur, ou unlist. Comme précédemment, var renverra les covariances, et sd sera à nouveau obsolète, mais renverra l’écart type des colonnes. mad nécessite que vous soyez contraint à un vecteur ou à unlist. En général pour un data.frame, si vous voulez que quelque chose agisse sur toutes les valeurs, vous allez généralement le unlist en premier.

Edit: Dernières nouvelles de dernière heure (): Dans R 3.0.0, le nom signifie.data.frame est défunctifié:

o   mean() for data frames and sd() for data frames and matrices are
defunct.
23
joran

Par défaut, mean et median etc. fonctionnent sur un tableau ou une matrice entière.

Par exemple.:

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

# matrix:
mean(as.matrix(m)) # same as before

Pour les trames de données, vous pouvez d’abord les contraindre à une matrice (la raison par défaut pour les colonnes est qu’une trame de données peut avoir des colonnes contenant des chaînes, ce que vous ne pouvez pas prendre comme moyenne):

# data frame
mdf <- as.data.frame(m)
# mean(mdf) returns column means
mean( as.matrix(mdf) ) # one value.

Veillez simplement à ce que votre cadre de données comporte toutes les colonnes numériques avant de contraindre la matrice. Ou exclure les non-numériques.

13
mathematical.coffee

Vous pouvez utiliser library dplyr via install.packages ('dplyr') puis 

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