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

含NA的分类学层级数据框如何生成igraph可用的边数据框?

生成分类学层级边数据框的解决方案

步骤1:预处理数据(统一缺失值格式)

首先将数据中的空字符串转换为NA,方便后续统一处理缺失值:

library(tidyverse)

# 替换空字符串为NA,统一缺失值格式
object_taxonomy_clean <- object_taxonomy %>%
  mutate(across(everything(), ~na_if(., "")))

步骤2:逐行生成层级边对

对每一行的分类层级,提取非缺失值组成完整路径,再生成相邻层级的From-To边对:

# 生成边数据框
edges <- object_taxonomy_clean %>%
  rowwise() %>%
  # 提取当前行非NA的分类层级,按列顺序组成路径
  mutate(taxon_path = list(na.omit(c_across(everything())))) %>%
  # 为路径中的相邻层级生成From-To配对
  mutate(edge_pairs = list(map2(taxon_path[-length(taxon_path)], taxon_path[-1], 
                                ~tibble(From = .x, To = .y)))) %>%
  # 展开所有边对
  unnest(edge_pairs) %>%
  # 仅保留From和To列
  select(From, To) %>%
  # 可选:去重重复边(如果需要唯一的层级关系,可保留此步;若需保留所有行的重复路径,可删除此步)
  distinct()

结果验证

运行上述代码后,edges数据框的格式与你期望的一致。例如查看部分结果:

# 查看前10条边
head(edges, 10)

输出示例:

# A tibble: 10 × 2
   From         To           
   <chr>        <chr>        
 1 Insecta      Hymenoptera  
 2 Hymenoptera  Chalcidoidea 
 3 Chalcidoidea Azotidae     
 4 Azotidae     Ablerus      
 5 Ablerus      Ablerus celsus
 6 Insecta      Hemiptera    
 7 Hemiptera    Coccoidea    
 8 Coccoidea    Diaspididae  
 9 Diaspididae  Chionaspis   
10 Chionaspis   Chionaspis salicis

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 21:09:51