writing a function to calculate the mean of columns in a dataframe in R

前端 未结 3 1354

I have to calculate the mean of the columns in a dataframe by writing a function and then applying it. I understand that this is easy to do with mean and

相关标签:
3条回答
  • 2021-01-13 22:51

    Here's an example by slightly modifying your second attempt

    mean_fun<-function(x){
        mean_c = numeric(0)
        for( i in 1:ncol(x)){
            s = sum(x[,i], na.rm=TRUE)
            l = length(x[,i][is.na(x[,i]) == FALSE])
            mean_c[i] = s/l
        }
        return (mean_c)
    }
    

    USAGE

    mean_fun(mtcars)
    # [1]  20.090625   6.187500 230.721875 146.687500   3.596563   3.217250  17.848750   0.437500   0.406250
    #[10]   3.687500   2.812500
    
    0 讨论(0)
  • 2021-01-13 22:58

    Why not to use dplyr?

    You can get the mean for all columns in your data.frame using

    summarise_each(funs(mean))
    

    If we apply it to mtcars

    library(dplyr)
    mtcars %>% summarise_each(funs(mean))
    
    #       mpg    cyl     disp       hp     drat      wt     qsec     vs      am   gear   carb
    #1 20.09062 6.1875 230.7219 146.6875 3.596563 3.21725 17.84875 0.4375 0.40625 3.6875 2.8125
    
    0 讨论(0)
  • 2021-01-13 23:13

    Assuming that all the columns in your data frame are numeric, here is a tweak of your first function, where x is a vector (a column in mydataframe).

    mean_fun<-function(x){
        mean_c= sum(x,na.rm=TRUE)/length(!is.na(x))
        return(mean_c)
    }
    
    apply(mydataframe,2,mean_fun)
    
    0 讨论(0)
提交回复
热议问题