如何预处理数据框适配R语言vegan包,统计样方年度物种信息
R 植被调查数据统计及宽格式转换实现方案
注:你提供的测试数据集子集未包含year字段,运行代码前请确保你的完整数据集已添加对应年份列
需求梳理
你需要完成两个核心任务:
- 按年份、样方分组统计独有的物种总数,以及对应的物种名录
- 将处理后的数据转换为宽格式,满足vegan包计算多样性指数的输入要求
原代码问题说明
你之前编写的代码存在逻辑错误:count()是独立的分组统计函数,不能直接在summarise()中调用,且现有逻辑也无法实现去重统计独有物种、拼接物种名录的需求。
完整实现代码
# 加载依赖包 library(dplyr) library(tidyr) # 1. 生成样方-年份的物种统计结果(符合你给出的示例输出结构) comp_summary <- comp %>% # 先去重,排除同一样方同一年多次采集到的同一物种的重复记录 distinct(site, plot, year, species) %>% group_by(site, plot, year) %>% summarise( total_species = n(), species = paste(unique(species), collapse = ", ") ) %>% ungroup() # 2. 转换为vegan包所需的宽格式(行对应样方/年份,列对应物种,值为物种出现标记) comp_vegan <- comp %>% distinct(site, plot, year, species) %>% # 标记物种出现为1 mutate(occur = 1) %>% pivot_wider( id_cols = c(site, plot, year), names_from = species, values_from = occur, # 未出现的物种填充为0,符合vegan输入规范 values_fill = 0 )
使用说明
- 查看
comp_summary即可得到你需要的分样方分年份的物种统计结果 - 直接提取
comp_vegan中物种对应的列生成矩阵,即可传入vegan的diversity()等函数计算各类多样性指数
内容的提问来源于stack exchange,提问作者Moriah
相关产品推荐
相关产品推荐

