Code
library(dplyr)
library(ggplot2)
library(car)
library(emmeans)
# Simulate 3×3 factorial data
set.seed(2026)
data_3x3 <- expand.grid(
Nitrogen = factor(c("0", "50", "100"), levels = c("0", "50", "100")),
Irrigation = factor(c("Low", "Medium", "High"), levels = c("Low", "Medium", "High")),
Rep = 1:8
) |>
mutate(
mu = case_when(
Nitrogen == "0" & Irrigation == "Low" ~ 2800,
Nitrogen == "50" & Irrigation == "Low" ~ 2900,
Nitrogen == "100" & Irrigation == "Low" ~ 3000,
Nitrogen == "0" & Irrigation == "Medium" ~ 3200,
Nitrogen == "50" & Irrigation == "Medium" ~ 3500,
Nitrogen == "100" & Irrigation == "Medium" ~ 3800,
Nitrogen == "0" & Irrigation == "High" ~ 3500,
Nitrogen == "50" & Irrigation == "High" ~ 4200,
Nitrogen == "100" & Irrigation == "High" ~ 4800
),
Yield = mu + rnorm(n(), mean = 0, sd = 150)
)
# Treatment mean table
data_3x3 |>
group_by(Nitrogen, Irrigation) |>
summarise(Mean_Yield = round(mean(Yield), 0), .groups = "drop") |>
tidyr::pivot_wider(names_from = Irrigation, values_from = Mean_Yield)#> # A tibble: 3 × 4
#> Nitrogen Low Medium High
#> <fct> <dbl> <dbl> <dbl>
#> 1 0 2807 3129 3492
#> 2 50 2857 3471 4233
#> 3 100 2990 3683 4850