You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用R语言将Excel中4244种细菌物种名转换为门分类?

用R语言将细菌物种名映射到门分类的解决方案

以下是针对需求的具体实现步骤,基于taxize包调用NCBI分类数据库完成物种到门的映射:

1. 安装并加载必备工具包

需要用到读取Excel的readxl、调用分类数据库的taxize,以及数据处理的dplyr:

# 首次运行请安装包
install.packages(c("readxl", "taxize", "dplyr"))

# 加载包
library(readxl)
library(taxize)
library(dplyr)

2. 读取Excel中的细菌数据

假设你的Excel文件中,细菌物种名列的表头为species,替换文件路径后执行:

# 读取Excel文件,替换为你的实际文件路径
bacteria_df <- read_excel("你的细菌数据文件.xlsx")

# 提取物种名并转为字符型,避免因子类型干扰
species_vec <- as.character(bacteria_df$species)

3. 从NCBI获取分类信息并提取门级别数据

通过taxize的classification函数批量请求NCBI数据库,设置延迟避免触发请求限制:

# 批量获取分类信息,delay=1秒控制请求频率
taxonomy_results <- classification(species_vec, db = "ncbi", delay = 1)

# 遍历结果列表,提取门(Phylum)信息,匹配失败则返回NA
phylum_list <- lapply(taxonomy_results, function(tax) {
  if (!is.null(tax)) {
    # 筛选rank为phylum的分类名称
    phylum <- tax$name[tax$rank == "phylum"]
    # 如果没有找到门级别数据,返回NA
    ifelse(length(phylum) > 0, phylum, NA)
  } else {
    NA
  }
})

# 将列表转为向量,方便合并到原数据
phylum_vec <- unlist(phylum_list)

4. 合并门分类信息到原数据集

# 添加门分类列到原数据框
bacteria_df$phylum <- phylum_vec

# 查看处理后的结果
head(bacteria_df)

处理物种名匹配失败的情况

如果部分物种名无法匹配,可先通过gnr_resolve函数校正学名:

# 调用全球名称解析服务匹配正确学名,data_source_ids=4指定NCBI数据源
resolved_names <- gnr_resolve(species_vec, data_source_ids = 4)

# 提取匹配后的正确名称,替换原物种名重新请求分类信息
corrected_species <- resolved_names$matched_name
taxonomy_corrected <- classification(corrected_species, db = "ncbi", delay = 1)

内容的提问来源于stack exchange,提问作者NLG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 01:36:20