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

使用dplyr汇总芯片数据时丢失systemic_name列的求助

解决dplyr分组汇总丢失systemic_name列的问题

问题原因

你用summarise时,默认只会保留分组列(也就是group_by里的gene_name)和你主动计算的汇总列,其他列会被自动丢弃,这就是systemic_name消失的原因。

解决方案

根据gene_name和systemic_name的对应关系,分两种情况处理:

情况1:每个gene_name对应唯一的systemic_name(芯片数据最常见)

这种场景下,有两种简单处理方式:

方式1:将systemic_name加入分组

直接在group_by里同时指定gene_name和systemic_name,因为每个基因对应唯一的系统名,分组后不会影响均值计算,还能保留该列:

df_expression <- microarray_data |>
  group_by(gene_name, systemic_name) |>
  summarise(
    mean_log_fc = mean(log_fc, na.rm = TRUE),
    mean_ave_exp = mean(ave_expr, na.rm = TRUE),
    mean_p_val = mean(p_value, na.rm = TRUE),
    mean_adj_p_val = mean(adj_p_val, na.rm = TRUE),
    .groups = "drop" # 可选,取消数据的分组状态,方便后续操作
  )

方式2:在summarise里提取唯一的systemic_name

如果不想修改分组,直接在summarise里用unique()提取该基因对应的唯一系统名(因为唯一,unique()会返回单个值):

df_expression <- microarray_data |>
  group_by(gene_name) |>
  summarise(
    systemic_name = unique(systemic_name),
    mean_log_fc = mean(log_fc, na.rm = TRUE),
    mean_ave_exp = mean(ave_expr, na.rm = TRUE),
    mean_p_val = mean(p_value, na.rm = TRUE),
    mean_adj_p_val = mean(adj_p_val, na.rm = TRUE),
    .groups = "drop"
  )

如果数据里有NA,可改成systemic_name = unique(na.omit(systemic_name))避免返回NA。

情况2:一个gene_name对应多个不同的systemic_name(较少见)

如果一个基因对应多个系统名,你需要先确定如何处理这些值:

  • 保留第一个出现的:systemic_name = first(systemic_name, na.rm = TRUE)
  • 保留最后一个出现的:systemic_name = last(systemic_name, na.rm = TRUE)
  • 合并成逗号分隔的字符串:systemic_name = paste(unique(systemic_name), collapse = ", ")

把对应代码替换到summarise里即可,示例:

df_expression <- microarray_data |>
  group_by(gene_name) |>
  summarise(
    systemic_name = paste(unique(systemic_name), collapse = ", "),
    mean_log_fc = mean(log_fc, na.rm = TRUE),
    mean_ave_exp = mean(ave_expr, na.rm = TRUE),
    mean_p_val = mean(p_value, na.rm = TRUE),
    mean_adj_p_val = mean(adj_p_val, na.rm = TRUE),
    .groups = "drop"
  )

补充说明

之前你尝试用select没用是正常的——select只是用来筛选列,但无法让summarise保留非分组、非汇总计算的列,必须通过上面的方式主动保留systemic_name。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:30:50