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

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

【问题讨论】:

    标签: r mean


    【解决方案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))
              

              【讨论】:

                猜你喜欢
                • 2013-12-15
                • 2018-01-03
                • 2019-01-20
                • 2020-12-07
                • 1970-01-01
                • 2016-03-03
                • 1970-01-01
                相关资源
                最近更新 更多