# [R] Calculate geometric mean with tapply

PIKAL Petr petr.pikal at precheza.cz
Tue Jun 25 14:50:04 CEST 2013

```Hm

> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Shane Carey
> Sent: Tuesday, June 25, 2013 1:25 PM
> To: Rui Barradas
> Cc: r-help at r-project.org
> Subject: Re: [R] Calculate geometric mean with tapply
>
> Thanks for your help, put I've tried that and it still gives me back
> the mean when I use it within tapply for some reason

can we believe it? Data, code please

> set.seed(111)
> x<-rnorm(10)
> mean(x)
[1] -0.6690135
> gmean(x)
[1] 0.4985282
> tapply(vysled\$gamapoml, vysled\$vzorek, mean)
vz2   vz4   vz6
341.0 343.0 332.4
> tapply(vysled\$gamapoml, vysled\$vzorek, gmean)
vz2      vz4      vz6
340.5418 342.6154 332.2701
>

I get different result for mean and gmean within tapply my data.

Regards
Petr
>
>
> On Tue, Jun 25, 2013 at 12:17 PM, Rui Barradas <ruipbarradas at sapo.pt>
> wrote:
>
> > 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:
> >
> >  Hi,
> >>
> >> I am trying to calculate the geometric mean with tapply. This is the
> >> formula I am using:
> >>
> >> exp(tapply(log(data\$value), data\$group, mean))
> >>
> >>
> >> However, it returns the arithmetic mean. Any ideas?
> >>
> >>
> >> Thanks
> >>
> >>
> >>
>
>
> --
> Shane
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> 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.

```