Ich versuche, die folgende Sache zu tun: Ich bin in einer großen Funktion, die ich schreiben muss. Im letzten Teil muss ich den Mittelwert einer Spalte im Datenrahmen berechnen, und die Variable Spalte, aus der ich den Mittelwert berechnen muss, wird als Argument für die Funktion angegeben. Ich bin ein totaler Anfänger bis R und ich bin völlig verloren. Danke.R Brauchen Sie Hilfe, um den Mittelwert einer Spalte in einem Datenrahmen zu berechnen
Antwort
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
Jede der folgenden soll funktionieren !!
df <- data.frame(x=1:3,y=4:6)
mean(df$x)
mean(df[,1])
mean(df[["x"]])
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.
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))
Verwenden summarise
im dplyr
Paket:
library(dplyr)
summarise(df, Average = mean(col_name, na.rm = T))
Anmerkung: dplyr
unterstützt sowohl summarise
und summarize
.
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)