繁体   English   中英

编写函数来计算R中数据帧中列的平均值

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

我必须通过编写函数然后应用它来计算数据框中列的平均值。 我明白这很容易用meanapply来做,但我需要编写自己的函数。 我做了很多尝试,但似乎无法做到这一点。 以下是我的3次尝试。 我是R的初学者。我非常感谢任何建议。

mean_fun<-function(x){
  mean_c[i]= sum(x[1:dim(x)],na.rm=TRUE)/length(x[1:dim(x)])
  return(mean_c[i])
}


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


mean_fun<-function(x){
  x=rbind(x,newrow)
  for(i in 1:ncol(x)){
    x[newbottomrownumber,i]=sum[i]/length[i]}
  return(x[1303,])
}

假设数据框中的所有列都是数字,这里是第一个函数的调整,其中x是一个向量(mydataframe中的一列)。

mean_fun<-function(x){
    mean_c= sum(x,na.rm=TRUE)/length(!is.na(x))
    return(mean_c)
}

apply(mydataframe,2,mean_fun)

这是一个稍微修改你的第二次尝试的例子

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

用法

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

为什么不使用dplyr

您可以使用获取data.frame中所有列的均值

summarise_each(funs(mean))

如果我们将它应用于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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM