给定列名,数据框中列的平均值

Posted

技术标签:

【中文标题】给定列名,数据框中列的平均值【英文标题】:Mean of a column in a data frame, given the column's name 【发布时间】:2014-06-03 12:55:09 【问题描述】:

我在一个必须编写的大函数中。在最后一部分中,我必须计算数据框中列的平均值。我正在操作的列的名称作为函数的参数给出。

【问题讨论】:

【参考方案1】:

我想您是在问如何在给定列名的情况下计算数据框中变量的平均值。有两种典型的方法可以做到这一点,一种是使用[[ 进行索引,另一种是使用[ 进行索引:

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

【讨论】:

【参考方案2】:

如果您的列包含您想要忽略的任何值。它会帮助你

## 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)

【讨论】:

【参考方案3】:

以下任何一项都应该有效!

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

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

【讨论】:

【参考方案4】:

dplyr 包中使用summarise

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

注意:dplyr 同时支持summarisesummarize

【讨论】:

【参考方案5】:

我认为您被要求做的(或者可能是问自己?)是获取一个与特定数据帧中的列名称匹配的字符值(可能也作为字符给出)。这里有两个技巧。大多数人学习使用“$”运算符来提取列,如果函数被传递一个字符向量,这将无法在函数内部工作。如果该函数也应该接受字符参数,那么您还需要使用 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 函数是让您将字符值“提升”到语言级别评估的函数之一。并且“$”函数不会在函数中评估它的参数,所以你需要使用“[[”。 "$" 仅在控制台级别有用,在函数中需要完全避免。

【讨论】:

【参考方案6】:

假设您有一个包含“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))

【讨论】:

以上是关于给定列名,数据框中列的平均值的主要内容,如果未能解决你的问题,请参考以下文章

Datagrid:计算页脚中列的平均值或总和

这是用熊猫中列的平均值替换字符串的正确方法吗?

R - 根据条件组合行以获得平均值/平均值

将定义集中的值设置为 Pandas 数据框中列的给定值(f.e. NaN)

用相关列的平均值替换数据框中的 NaN 值的函数

用 Python 用该列的平均值减去数据框中的每一列