Skip to content

Calculate geometric mean with tapply

7 messages · Shane Carey, Rui Barradas, PIKAL Petr +1 more

#
Hello,

You can write a function gmean and tapply it to your data.


gmean <- function(x, na.rm = FALSE){
	if(na.rm) x <- x[!is.na(x)]
	n <- length(x)
	prod(x)^(1/n)
}

tapply(data$value, data$group, gmean)


Hope this helps,

Rui Barradas

Em 25-06-2013 11:58, Shane Carey escreveu:
#
Hm
can we believe it? Data, code please
[1] -0.6690135
[1] 0.4985282
vz2   vz4   vz6 
341.0 343.0 332.4
vz2      vz4      vz6 
340.5418 342.6154 332.2701
I get different result for mean and gmean within tapply my data.

Regards
Petr
#
May be this also works:

?exp(mean(log(abs(x))))
#[1] 0.4985282
A.K.



----- Original Message -----
From: PIKAL Petr <petr.pikal at precheza.cz>
To: Shane Carey <careyshan at gmail.com>
Cc: "r-help at r-project.org" <r-help at r-project.org>
Sent: Tuesday, June 25, 2013 8:50 AM
Subject: Re: [R] Calculate geometric mean with tapply

Hm
can we believe it? Data, code please
[1] -0.6690135
[1] 0.4985282
? vz2?  vz4?  vz6 
341.0 343.0 332.4
? ?  vz2? ? ? vz4? ? ? vz6 
340.5418 342.6154 332.2701
I get different result for mean and gmean within tapply my data.

Regards
Petr
______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.