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
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
.
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?
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.
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.
Vous pouvez utiliser library dplyr
via install.packages ('dplyr') puis
dataframe.mean <- dataframe %>%
summarise_all(mean) # replace for median