如何用R计算植物物种的相对频率、存在时平均丰度及总平均丰度
R实现植物物种丰度统计指标批量计算
针对你拥有的1415个样方、37种植物的丰度数据集,用R的tidyverse工具链可以高效完成所有统计指标计算,完全替代手动Excel操作。以下是完整实现步骤:
1. 加载必要包
我们用到dplyr做数据汇总,tidyr做格式转换,knitr生成规范表格:
library(tidyverse) library(knitr)
2. 示例数据(替换为你的真实数据集即可)
你的示例数据可直接使用:
Quadrat <- c("A", "B", "C", "D", "E") Species1 <- c(23, 41, 32, 58, 0) Species2 <- c(1, 5, 0, 0, 20) Species3 <- c(80, 90, 75, 58, 65) df <- data.frame(Quadrat, Species1, Species2, Species3)
3. 数据格式转换
将宽格式数据转为长格式,方便按物种分组计算:
df_long <- df %>% pivot_longer( cols = -Quadrat, # 排除样方列,其余均为物种丰度列 names_to = "Species", values_to = "Abundance" )
4. 批量计算所有统计指标
按物种分组,一次性计算你需要的所有指标:
species_stats <- df_long %>% group_by(Species) %>% summarise( # 相对频率:物种出现的样方数/总样方数 Relative_Frequency = sum(Abundance > 0) / n(), # 存在时的平均丰度(0视为NA)及标准误 Mean_Abundance_Present = mean(Abundance[Abundance > 0], na.rm = TRUE), SE_Present = sd(Abundance[Abundance > 0], na.rm = TRUE) / sqrt(sum(Abundance > 0)), # 总平均丰度(0保留)及标准误 Mean_Abundance_Total = mean(Abundance), SE_Total = sd(Abundance) / sqrt(n()) ) %>% ungroup()
5. 生成规范表格
用kable生成可读性强的表格,可直接导出或复制:
kable(species_stats, digits = 3, col.names = c("物种名称", "相对频率", "存在时平均丰度", "存在时标准误", "总平均丰度", "总标准误"))
关键说明
- 若你的物种列不是以
Species开头,只需调整pivot_longer的cols参数(比如cols = starts_with("你的物种列前缀"))即可,代码完全适配37种植物的规模。 - 所有计算均为批量处理,无需手动逐物种计算,1415个样方的数据集几秒内即可完成。
内容的提问来源于stack exchange,提问作者Melina Guene
相关产品推荐
相关产品推荐

