[英]Mean of a column in a data frame, given the column's name
我在一個我必須編寫的大函數中。 在最后一部分中,我必須計算數據框中列的平均值。 我正在操作的列的名稱作為函數的參數給出。
我想你是在問如何計算數據框中變量的平均值,給定列的名稱。 有到這樣做,有一個索引兩種典型的方法[[
和其他索引與[
:
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
以下任何一項都應該有效!!
df <- data.frame(x=1:3,y=4:6)
mean(df$x)
mean(df[,1])
mean(df[["x"]])
如果您的列包含您想要忽略的任何值。 它會幫助你
## 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)
我認為你被要求做的(或者也許是問自己?)是取一個與特定數據幀中列的名稱匹配的字符值(也可能作為字符給出)。 這里有兩個技巧。 大多數人學習使用“$”操作符提取列,如果函數被傳遞一個字符向量,這將無法在函數內部工作。 如果該函數也應該接受字符參數,那么您還需要使用get
函數:
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
在普通對象(如字符向量)和語言對象(如對象名稱)之間存在某種語義邊界。 get
函數是讓您將字符值“提升”到語言級別評估的函數之一。 並且“$”函數不會在函數中評估其參數,因此您需要使用“[[”。 “$”僅在控制台級別有用,需要在函數中完全避免。
在dplyr
包中使用summarise
:
library(dplyr)
summarise(df, Average = mean(col_name, na.rm = T))
注意: dplyr
支持summarise
和summarize
。
假設您有一個包含“x”和“y”列的數據框(比如 df),您可以使用以下方法找到列(x 或 y)的平均值:
1 .使用mean()函數
z<-mean(df$x)
2 .使用列名(比如 x)作為使用attach()
函數的變量
attach(df)
mean(x)
完成后,您可以調用detach()
來刪除“x”
detach()
3 .使用with()
函數,它可以讓你使用數據框的列作為不同的變量。
z<-with(df,mean(x))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.