给定列名,数据框中列的平均值
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
同时支持summarise
和summarize
。
【讨论】:
【参考方案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))
【讨论】:
以上是关于给定列名,数据框中列的平均值的主要内容,如果未能解决你的问题,请参考以下文章