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

R中如何用tidy方法对多列转录本基因显著性数据进行汇总?

实现思路

你可以通过「宽表转长表」的思路统一处理所有模型列,无需手动逐个指定模型,核心逻辑如下:

  • 把除转录本、基因ID外的所有模型判定列转为长格式,将模型名统一归集到同一列,判定结果归集到另一列
  • 过滤出判定为显著(TRUE)的记录
  • 按模型分组,分别统计转录本数量、去重后基因数量,再拼接对应的ID字符串即可
代码实现(基于tidyverse)
# 加载依赖包
library(tidyverse)

# 可选步骤:修正原始数据中模型判定列为逻辑型,也可以直接过滤匹配字符串"TRUE"
shared_clean <- shared %>%
  mutate(across(starts_with("model"), ~as.logical(.x)))

# 汇总计算
result <- shared_clean %>%
  # 宽表转长表,所有模型列转为长格式,如果模型列名不是model开头,可以替换为cols = -c(transcript, gene)
  pivot_longer(cols = starts_with("model"), 
               names_to = "model", 
               values_to = "is_significant") %>%
  # 过滤显著的记录
  filter(is_significant) %>%
  # 按模型分组汇总
  group_by(model) %>%
  summarise(
    n_transcripts = n(),
    n_genes = n_distinct(gene),
    transcripts = paste(transcript, collapse = ";"),
    genes = paste(unique(gene), collapse = ";"),
    .groups = "drop"
  )

# 查看结果
print(result)

运行后输出的结果和你要求的格式完全一致:

# A tibble: 2 × 5
  model  n_transcripts n_genes transcripts             genes 
  <chr>          <int>   <int> <chr>                   <chr> 
1 model1             7       2 t1;t2;t3;t7;t8;t9;t10   g1;g3 
2 model2             7       2 t4;t5;t6;t7;t8;t9;t10   g2;g3 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:57:04