簡體   English   中英

給定列名稱的數據框中列的平均值

[英]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支持summarisesummarize

假設您有一個包含“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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM