2014-04-18 30 views

Antwort

19

Ich denke, Sie fragen, wie man den Mittelwert einer Variablen in einem Datenrahmen berechnet, angesichts der Name der Spalte. Es gibt zwei typische Ansätze, dies zu tun, eine Indizierung mit [[ und der anderen Indizierung mit [:

data(iris) 
mean(iris[["Petal.Length"]]) 
# [1] 3.758 
mean(iris[,"Petal.Length"]) 
# [1] 3.758 
mean(iris[["Sepal.Width"]]) 
# [1] 3.057333 
mean(iris[,"Sepal.Width"]) 
# [1] 3.057333 
6

Jede der folgenden soll funktionieren !!

df <- data.frame(x=1:3,y=4:6) 

mean(df$x) 
mean(df[,1]) 
mean(df[["x"]]) 
2

Ich denke, was Sie dazu aufgefordert werden (oder vielleicht fragen Sie sich?) Ist ein Zeichenwert nehmen, die den Namen einer Spalte in einem bestimmten Datenrahmen übereinstimmt (möglicherweise auch als ein Zeichen gegeben). Es gibt zwei Tricks hier. Die meisten Leute lernen, Spalten mit dem "$" -Operator zu extrahieren, und das funktioniert nicht innerhalb einer Funktion, wenn der Funktion ein Zeichen-Vecor übergeben wird. Wenn die Funktion auch annehmen Zeichenargument soll, dann müssen Sie auch die get-Funktion:

df1 <- data.frame(a=1:10, b=11:20) 
mean_col <- function(dfrm, col) mean(get(dfrm)[[ col ]]) 
mean_col("df1", "b") 
# [1] 15.5 

Es Art einer semantischen Grenze zwischen gewöhnlichen Objekten wie Zeichenvektoren und Sprachobjekte wie die Namen von Objekten . Die get-Funktion ist eine der Funktionen, mit denen Sie Zeichenwerte für die Sprachlevelbewertung "promoten" können. Und die "$" - Funktion wird ihr Argument NICHT in einer Funktion auswerten, also müssen Sie "[[" verwenden. "$" ist nur auf Konsolenebene nützlich und muss in Funktionen vollständig vermieden werden.

1

Angenommen, Sie einen Datenrahmen haben (sagen wir df) mit Spalten "x" und "y", meinst du der Spalte (x oder y) unter Verwendung finden können:

.using Mittelwert() Funktion

z<-mean(df$x) 

.Using die Spaltennamen (zB x) als eine Variable verwendetattach() Funktion

attach(df) 
mean(x) 

Wenn Sie detach() kann getan rufen entfernen "x"

detach() 

.using with() Funktion, es Sie als verschiedene Variablen verwenden, um Spalten von Datenrahmen können.

z<-with(df,mean(x)) 
0

Verwenden summarise im dplyr Paket:

library(dplyr) 
summarise(df, Average = mean(col_name, na.rm = T)) 

Anmerkung: dplyr unterstützt sowohl summarise und summarize.

3

Wenn Ihre Spalte einen Wert enthält, den Sie vernachlässigen möchten.es wird dir helfen

## da is data frame & Ozone is column name 

##for single column 
mean(da$Ozone, na.rm = TRUE) 

##for all columns 
colMeans(x=da, na.rm = TRUE) 
Verwandte Themen