2016-11-18 1 views
1

Ich bin neu hier, so entschuldigen Sie solch eine grundlegende Frage, aber ich fing gerade R an und ich wurde eine Frage gestellt, die mich ratlos ist:Wie findet man den Mittelwert einer Variablen für jeden Wert einer anderen Variablen?

Verwenden des vorinstallierten Datensatzes in R, mtcars, I ' m soll für jeden Wert der Variable "gear" den Mittelwert der Variablen "mpg" finden. Ich bin mir nicht sicher, was das bedeutet. Ich nehme an, dass ich eine Teilmenge verwenden muss?

Es ist so grundlegend, so dass ich ein wenig frustriert Ich sehe nicht, was hier zu tun ....

+1

Sie könnten versuchen, das Tutorial hier zu lesen: http://www.r-tutor.com/r-introduction/Datenrahmen 'mtcars' ist ein Objekt mit Zeilen und Spalten. Ich habe nicht das gesamte Dataset gesehen, aber "mpg" ist eine Spalte in diesem Dataset und ich nehme an, dass "gear" auch eine Spalte im Dataset ist. – scrappedcola

Antwort

4

Mit aggregate:

aggregate(mtcars$mpg,list(mtcars$gear),mean) 
## Group.1  x 
##1  3 16.10667 
##2  4 24.53333 
##3  5 21.38000 

Entsprechend der Dokumentation, siehe ?aggregate:

Teilt die Daten in Teilmengen auf, berechnet die Zusammenfassungsstatistiken für jede und gibt das Ergebnis in einer praktischen Form zurück.

Hier wird das erste Argument mtcars$mpg ist die Variable, die Sie im Durchschnitt wollen, und das zweite Argument ist eine Liste der Gruppenvariablen, mit denen jeder seinen Wert der Teilmenge von x bestimmt die Funktion anzuwenden, mean, dh das dritte Argument.

+0

gute Antwort, aber es könnte ein wenig sauberer mit der Formel Schnittstelle 'Aggregat sein (MPG ~ Gang, mtcars, Mittelwert)'. – Barker

+0

Eines der frustrierenden Dinge an den Coding-Klassen hier ist, dass sie uns die Grundlagen vermitteln und uns Fragen stellen, die Code betreffen, den wir noch nicht besprochen haben. Danke für die Einführung in die Aggregatfunktion! Große Hilfe! – ROCKaholic

2

Verwendung dplyr:

library(dplyr) 
mtcars %>% 
    group_by(gear) %>% 
    summarise(avg_mpg = mean(mpg)) 
+0

Vielen Dank :) – ROCKaholic

1

Manchmal ist es sinnvoll, durch die Visualisierung der Daten zu starten:

plot(x = mtcars$gear, y = mtcars$mpg) 

enter image description here

Wir können sehen, dass gear 3 Werte annimmt (3, 4 und 5), und wir möchten den Durchschnitt finden mpg Wert für jeden Wert des Zahnrads.

Wir können über subsetting dies tun, wie Sie vorschlagen:

mean(subset(mtcars, gear == 3)$mpg) 
# [1] 16.10667 

aber einen Weg, es zu tun Funktionen base R tapply:

tapply(mtcars$mpg, mtcars$gear, mean) 
#  3  4  5 
# 16.10667 24.53333 21.38000 
1

Oder verwenden data.table

library(data.table) 
as.data.table(mtcars)[, .(avg_mpg = mean(mpg)), by = gear] 
Verwandte Themen