含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
相关产品推荐
相关产品推荐

