For max var, we need at least 11, for min var, we need at least 19, for intermediate, we need at least 21.

library(pwr)

?power.anova.test

power.anova.test(groups = 4, n = NULL, between.var = var(c(18,18,20,20)), within.var = 3.5, sig.level = 0.05, power = 0.80)
## 
##      Balanced one-way analysis of variance power calculation 
## 
##          groups = 4
##               n = 10.56952
##     between.var = 1.333333
##      within.var = 3.5
##       sig.level = 0.05
##           power = 0.8
## 
## NOTE: n is number in each group
power.anova.test(groups = 4, n = NULL, between.var = var(c(18,18.6667,19.3333, 20)), within.var = 3.5, sig.level = 0.05, power = 0.80)
## 
##      Balanced one-way analysis of variance power calculation 
## 
##          groups = 4
##               n = 18.17901
##     between.var = 0.7407259
##      within.var = 3.5
##       sig.level = 0.05
##           power = 0.8
## 
## NOTE: n is number in each group
power.anova.test(groups = 4, n = NULL, between.var = var(c(18, 19, 19, 20)), within.var = 3.5, sig.level = 0.05, power = 0.80)
## 
##      Balanced one-way analysis of variance power calculation 
## 
##          groups = 4
##               n = 20.08368
##     between.var = 0.6666667
##      within.var = 3.5
##       sig.level = 0.05
##           power = 0.8
## 
## NOTE: n is number in each group
f1 <- c(17.6, 18.9, 16.3, 17.4, 20.1, 21.6)
f2 <- c(16.9, 15.3, 18.6, 17.1, 19.5, 20.3)
f3 <- c(21.4, 23.6, 19.4, 18.5, 20.5, 22.3)
f4 <- c(19.3, 21.1, 16.9, 17.5, 18.3, 19.8)
dat <- data.frame(f1, f2, f3, f4)
library(tidyr)
dat <- pivot_longer(dat, c(f1, f2, f3, f4))
aov.model <- aov(value~name, data = dat)
summary(aov.model)
##             Df Sum Sq Mean Sq F value Pr(>F)  
## name         3  30.16   10.05   3.047 0.0525 .
## Residuals   20  65.99    3.30                 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(aov.model)

a. P value is less than 0.10. We reject the null hypothesis.

b. All the assumptions are met, so the model is adequate.

TukeyHSD(aov.model, conf.level = 0.90)
##   Tukey multiple comparisons of means
##     90% family-wise confidence level
## 
## Fit: aov(formula = value ~ name, data = dat)
## 
## $name
##             diff        lwr       upr     p adj
## f2-f1 -0.7000000 -3.2670196 1.8670196 0.9080815
## f3-f1  2.3000000 -0.2670196 4.8670196 0.1593262
## f4-f1  0.1666667 -2.4003529 2.7336862 0.9985213
## f3-f2  3.0000000  0.4329804 5.5670196 0.0440578
## f4-f2  0.8666667 -1.7003529 3.4336862 0.8413288
## f4-f3 -2.1333333 -4.7003529 0.4336862 0.2090635
plot(TukeyHSD(aov.model, conf.level = 0.90))

Only the difference between fluid 2 and fluid 3 are statistically significant.