[英]writing a function to calculate the mean of columns in a dataframe in R
我必須通過編寫函數然后應用它來計算數據框中列的平均值。 我明白這很容易用mean
和apply
來做,但我需要編寫自己的函數。 我做了很多嘗試,但似乎無法做到這一點。 以下是我的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.