library(lmerTest)                        # loads lme4 and adds Satterthwaite df
d <- read.csv("cells.csv")
d$group <- factor(d$group, levels = c("control", "treated"))

m <- aggregate(length ~ group + mouse, data = d, FUN = mean)   # Route A
t.test(length ~ group, data = m)                                # Welch by default

fit <- lmer(length ~ group + (1 | mouse), data = d)             # Route B
summary(fit)                                                    # Satterthwaite df and p

ct <- summary(fit)$coefficients["grouptreated", ]                # estimate, SE, df, t, p
ct["Estimate"] + c(-1, 1) * qt(0.975, ct["df"]) * ct["Std. Error"]   # 95% CI, Satterthwaite df
vc <- as.data.frame(VarCorr(fit))$vcov                          # mouse variance, cell variance
vc[1] / sum(vc)                                                 # ICC
