2016-12-13 2 views
3

Ich habe einen Datenrahmen.R - tapply Spalte Mittelwert, zurück zur logischen Array

Ich versuche, die tapply Funktion zu verwenden, um den Durchschnitt einer Spalte zu finden, wenn die Werte einer zweiten Spalte einem gegebenen Wert entsprechen.

Ich mag tapply den Wert der Mittelwert zurückzukehren, aber es ist eine logische Array

(FALSCH Rückkehr - der Mittelwert, wenn die Werte der zweiten Spalte auf den angegebenen Wert nicht gleich tun, und TRUE - den Mittelwert wenn die Werte der zweiten Spalte den angegebenen Wert entsprechen kann)

Dies ist die Funktion, die ich anwenden bin (ich will die Mittel der Spalte „PS“, wenn Spalte „cyl“ gleich 4 ist)

tapply(mtcars$hp,mtcars$cyl==4,mean) 

Dies ist, was zurückgegeben wird:

FALSE  TRUE 
180.23810 82.63636 

Wie kann ich die Ausgabe einfach 82.63636 bekommen?

Danke

+1

greifen Sie das zweite Element des Ergebnisses 'tapply (mtcar s $ hp, mtcars $ cyl == 4, mean) [[2]] ' – SymbolixAU

+0

Ehrfürchtig, auf jeden Fall funktioniert. Vielen Dank! –

+2

Brauchen Sie überhaupt 'tapply'? 'mean (mtcars [mtcars $ cyl == 4," hp "])' – SymbolixAU

Antwort

2

Wenn Sietapply verwenden , das Ergebnis der Teilmenge benötigen nur den Wert, den Sie

tapply(mtcars$hp,mtcars$cyl==4,mean)[[2]] 
82.63636 

möchten jedoch zurückkehren, um den Mittelwert einer Spalte zu bekommen, Teilmenge durch eine andere Spalte, können Sie einfach mean auf die Teilmenge Daten aufrufen

mean(mtcars$hp[mtcars$cyl == 4]) 
82.63636 

## similarly 
# mean(mtcars[mtcars$cyl == 4, "hp"])