# Calculate Geometric Mean in R

Calculate Geometric Mean in R, Geometric mean is the nth root of the product of n values of a set of observations.

Geometric can be expressed as

**GM=(x _{1}, x_{2}, x_{3}, ……, x_{n})^{1/n}**

The advantage of the geometric mean is

- It is least affected by extreme values
- It is based on all observations of the set
- It is suitable for further algebraic treatment.

The disadvantageous of the geometric mean is

- Calculation is complicated
- Cannot be calculated if a set of value contains zero If any one or more values are negative, either geometric mean will not be calculated or an absurd value will be obtained.

Decision Trees in R » Classification & Regression »

## Calculate Geometric Mean in R

The syntax is as follows,

exp(mean(log(x)))

### Approach 1: GM of Vector

Let’s create a vector for geometric mean calculation.

data <- c(1, 15, 12, 5, 18, 11, 12, 15, 18, 25)

exp(mean(log(data))) 10.37383

Log Rank Test in R-Survival Curve Comparison »

### Approach 2: GM Vector with Zeros

As mentioned earlier if a set of values contains zero cannot be executed a geometric mean, However, we can ignore zero values and execute GM.

data <- c(1, 15, 12, 5, 0, 18, 11, 12, 15, 18, 25, 0, -11)

The above data set included negative values and zero.

Let’s make use of the below code for GM calculation.

exp(mean(log(data[data>0]))) 10.37383

Kruskal Wallis test in R-One-way ANOVA Alternative »

### Approach 3: GM Data Frame

Let’s create a data frame for geometric mean calculation.

data<- data.frame(x=c(10, 13, 14, 26, 38, 28, 29), y=c(15, 8, 18, 17, 1, 1, 6), z=c(12, 10, 18, 28, 29, 29, 12))

Calculate the geometric mean for x, y, and z.

apply(data[ , c('x', 'y', 'z')], 2, function(x) exp(mean(log(x))))

x y z 20.379699 5.798203 17.992195

## Conclusion

Geometric Mean is considered the most suitable average for index numbers.