在这个教程中,我们将介绍以下步骤:
准备数据和加载必要的 R 库;
进行显著性分析并获得分组标记;
制作数据总结表格;
绘制带显著性标记的箱线图;
将显著性结果表格导出为 Excel 文件。
在此示例中,我们将研究不同种类的鸢尾花(Species)在某个特征(如花萼长度 Sepal.Length)上的显著性差异。以下是使用 iris 数据集的完整流程代码。
第一步:加载 iris 数据集和所需的 R 包
iris
数据集(R 自带)并安装并加载相关的包。# 加载必要的包
library(tidyverse)
library(agricolae)
library(openxlsx)
第二步:查看数据结构
iris
数据集的前几行。iris
数据集包含了 150 个观测值,分为三个种类 (Species
):setosa
、versicolor
和 virginica
,每种 50 个观测值。每个观测值包含花萼长度、花萼宽度、花瓣长度和花瓣宽度的信息。# 查看 iris 数据集的前几行
head(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
第三步:执行显著性分析
Sepal.Length
(花萼长度)作为分析变量,并使用单因素方差分析(ANOVA)检验不同种类 Species
之间的显著性差异,然后使用 Duncan 检验进行多重比较以获得显著性字母分组。# 执行 ANOVA 检验
anova_result <- aov(Sepal.Length ~ Species, data = iris)
summary(anova_result)
## Df Sum Sq Mean Sq F value Pr(>F)
## Species 2 63.21 31.606 119.3 <2e-16 ***
## Residuals 147 38.96 0.265
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# 使用 Duncan 检验得到显著性字母标记
duncan_result <- duncan.test(anova_result, "Species")
print(duncan_result$groups) # 显示显著性分组字母
## Sepal.Length groups
## virginica 6.588 a
## versicolor 5.936 b
## setosa 5.006 c
# 将分组结果转换为数据框并按组排序
significant_labels <- as.data.frame(duncan_result$groups)
colnames(significant_labels)[1] <- "Species" # 将 'trt' 列名改为 'Species'
significant_labels$Species <- as.factor(significant_labels$Species) # 确保为因子类型
significant_labels <- significant_labels %>% arrange(Species)
第四步:制作显著性分析结果表格
# 计算每个种类的平均值和标准差,并合并显著性分组信息
summary_stats <- iris %>%
group_by(Species) %>%
summarize(
mean = mean(Sepal.Length),
sd = sd(Sepal.Length)
) %>%
left_join(significant_labels, by = "Species")
summary_stats$groups <-significant_labels$groups
# 查看结果表格
print(summary_stats)
## # A tibble: 3 × 4
## Species mean sd groups
## <fct> <dbl> <dbl> <chr>
## 1 setosa 5.01 0.352 c
## 2 versicolor 5.94 0.516 b
## 3 virginica 6.59 0.636 a
summary_stats
现在包含了各个 Species
的平均值、标准差和显著性字母标记,可直接用于报告。第五步:绘制带显著性字母标记的箱线图
ggplot2
绘制箱线图,并在图中添加显著性差异的字母。# 绘制箱线图并添加字母标记
ggplot(iris, aes(x = Species, y = Sepal.Length)) +
geom_boxplot() +
geom_text(data = summary_stats, aes(x = Species, y = max(iris$Sepal.Length) + 0.2, label = groups),
vjust = 0) +
labs(title = "Boxplot of Sepal Length with Significant Difference Letters",
x = "Species",
y = "Sepal Length")
第六步:将结果表格导出到 Excel
summary_stats
表格导出到 Excel 文件,便于保存和进一步分析。# 创建 Excel 文件
wb <- createWorkbook()
# 添加工作表并写入数据
addWorksheet(wb, "Significant Analysis")
writeData(wb, "Significant Analysis", summary_stats)
# 保存 Excel 文件
saveWorkbook(wb, file = "Iris_Significance_Analysis.xlsx", overwrite = TRUE)
# 确认导出
print("数据已导出到 Iris_Significance_Analysis.xlsx 文件")
## [1] "数据已导出到 Iris_Significance_Analysis.xlsx 文件"
总结
iris
数据集进行了显著性分析,生成了一个包含平均值、标准差和显著性字母的表格,绘制了带显著性字母标记的箱线图,并将结果导出到 Excel 文件。这种流程可以用于各种数据集和科研场景,帮助您更好地展示和理解实验组之间的差异。