Résumé statistiques par deux ou plus de facteurs variables?
Ce fait est illustré par un exemple
str(mtcars)
mtcars$gear <- factor(mtcars$gear, labels=c("three","four","five"))
mtcars$cyl <- factor(mtcars$cyl, labels=c("four","six","eight"))
mtcars$am <- factor(mtcars$am, labels=c("manual","auto")
str(mtcars)
tapply(mtcars$mpg, mtcars$gear, sum)
Qui me donne un résumé de la manivelle par les engins. Mais disons que je voulais un tableau 3x3 avec des engins à travers le haut et le cylindre sur le côté, et 9 cellules avec le bivariée sommes, comment pourrais-je obtenir ce 'intelligemment'.
J'ai pu aller.
tapply(mtcars$mpg[mtcars$cyl=="four"], mtcars$gear[mtcars$cyl=="four"], sum)
tapply(mtcars$mpg[mtcars$cyl=="six"], mtcars$gear[mtcars$cyl=="six"], sum)
tapply(mtcars$mpg[mtcars$cyl=="eight"], mtcars$gear[mtcars$cyl=="eight"], sum)
Cela semble lourd.
Alors comment pourrais-je apporter une 3e variable dans le mélange?
C'est un peu dans l'espace, je suis en train de réfléchir.
Résumé statistiques à l'aide de ddply
mise à jour Cela me fait là, mais c'est pas assez.
aggregate(mpg ~ am+cyl+gear, mtcars,sum)
Acclamations
OriginalL'auteur nzcoops | 2012-04-19
Vous devez vous connecter pour publier un commentaire.
Comment à ce sujet, toujours à l'aide de
tapply()
? Il est plus polyvalent que vous le saviez!Ou, si vous souhaitez que le résultat de l'impression d'être un peu plus interprétables:
Si vous souhaitez utiliser plus de deux la croix-variables de classification, l'idée est exactement la même chose. Les résultats seront ensuite renvoyés dans un 3-ou-plus-dimensions tableau:
ftable
pourrait également être d'intérêt.OriginalL'auteur Josh O'Brien
Je pense que les réponses sont déjà sur cette question sont des options fantastiques, mais je voulais partager une option supplémentaire basé sur le
dplyr
paquet (ce qui est venu pour moi parce que je suis l'enseignement d'une classe dès maintenant, où nous utilisonsdplyr
pour la manipulation de données, donc je voulais éviter d'introduire les étudiants à des services spécialisés de la base de R des fonctions commetapply
ouaggregate
).Vous pouvez regrouper autant de variables que vous le souhaitez à l'aide de la
group_by
la fonction, puis de résumer l'information à partir de ces groupes avecsummarize
. Je pense que ce code est plus lisible pour un R de nouveaux arrivants que la formule de base de l'interface deaggregate
, produisant des résultats identiques:À deux variables, vous pouvez résumer en une variable sur les lignes et l'autre sur les colonnes en ajoutant un appel à la
spread
fonction de latidyr
package:vous pouvez la lire stackoverflow.com/questions/24536154/what-does-mean-in-r
OriginalL'auteur josliber
J'aime Josh réponse à cela, mais
reshape2
peut également fournir un cadre utile pour ce type de problèmes:"mpg"
passé àmeasure.vars
, b/c le code n'était pas autrement de travail pour moi. Ne fait que regarder à droite pour vous aussi? Aussi, est-il un moyen facile d'obtenir ce retourNA
plutôt que0
dans le milieu de la rangée du bas?très étrange, je n'ai aucune idée de la raison qui a travaillé précédemment sans les guillemets autour de mpg...merci pour ça. Aussi, le
fill
paramètredcast
devrait permettre de NA, mais j'ai une erreur étrange...la mise enfill = Inf
ou toute autre valeur numérique fonctionne bien. Ce n'est pas ce que je m'attendrais à partir de la fonction...va creuser plus loinOriginalL'auteur Chase
La réponse contient même une sortie à l'aide tapply et de la fonction d'agrégation.
Je voudrais ajouter quelques informations à Josh O'Brien réponse. L'utilisateur peut soit utiliser la fonction d'agrégation ou tapply en fonction de la production. Afin d'utiliser plus d'un facteur variable dans tapply on peut utiliser la méthode de Josh l'a montré.
Chargement dataset
À l'aide de tapply
La sortie de code ci-dessus est
À l'aide de la fonction d'agrégation
De sortie de la fonction d'agrégation
Maintenant, si l'utilisateur veut le même résultat que la fonction d'agrégation, mais à l'aide de tapply.
De sortie de la fonction tapply
NA peut être conservé ou supprimé que par les exigences d'affaires.
OriginalL'auteur Maulik Chaudhary