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

如何在R中基于数据框的成对列批量生成新分组列

批量生成R数据框的配对分组列解决方案

方法一:使用tidyr重塑+批量计算(推荐,自动配对)

这种方法通过正则拆分列名自动识别FF/FFPE配对,无需手动指定列,适合70列的大规模数据:

library(tidyverse)

# 示例数据
gene <- c("gene1", "gene2", "gene3", "gene4")
FF1 <- c(10,20,30,40)
FFPE1 <- c(10,9,2,1)
FF2 <- c(0,2,50,60)
FFPE2 <- c(10,10,100,200)
expression <- data.frame(gene, FF1, FFPE1, FF2, FFPE2)

# 核心处理代码
result <- expression %>%
  # 宽格式转长格式,拆分样本类型和分组编号
  pivot_longer(
    cols = -gene,
    names_to = c("sample_type", "group_id"),
    names_pattern = "(FF|FFPE)(\\d+)"  # 正则匹配列名的类型与数字后缀
  ) %>%
  # 转回宽格式,让FF和FFPE成为同一行的两列
  pivot_wider(
    names_from = sample_type,
    values_from = value
  ) %>%
  # 按规则生成分组值
  mutate(
    group = case_when(
      FF > 5 & FFPE > 5 ~ 3,
      FF > 5 & FFPE <= 5 ~ 1,
      FF <= 5 & FFPE > 5 ~ 2,
      TRUE ~ 0  # 处理两者都不大于5的情况,可按需修改
    )
  ) %>%
  # 分组列转回宽格式,匹配原数据结构
  pivot_wider(
    names_from = group_id,
    values_from = group,
    names_prefix = "group"
  ) %>%
  # 合并回原数据框
  left_join(expression, ., by = "gene")

# 查看结果
print(result)

运行后会自动生成所有配对的分组列,完全匹配你期望的输出格式。

方法二:手动配对列+批量计算(适合精确控制配对场景)

如果需要明确指定FF与FFPE的配对关系,可使用这种方法:

library(tidyverse)

# 提取并按数字排序配对FF/FFPE列
sample_cols <- colnames(expression)[-1]
ff_cols <- str_subset(sample_cols, "^FF\\d+$") %>% 
  arrange(as.numeric(str_extract(., "\\d+")))
ffpe_cols <- str_subset(sample_cols, "^FFPE\\d+$") %>% 
  arrange(as.numeric(str_extract(., "\\d+")))

# 批量生成分组列
group_data <- map2_dfc(ff_cols, ffpe_cols, function(ff_col, ffpe_col) {
  case_when(
    expression[[ff_col]] > 5 & expression[[ffpe_col]] > 5 ~ 3,
    expression[[ff_col]] > 5 & expression[[ffpe_col]] <= 5 ~ 1,
    expression[[ff_col]] <= 5 & expression[[ffpe_col]] > 5 ~ 2,
    TRUE ~ 0
  ) %>% 
    set_names(str_c("group", str_extract(ff_col, "\\d+")))
})

# 合并到原数据框
result <- bind_cols(expression, group_data)

关键说明

  • 两种方法都支持6万多行的大数据量,tidyverse函数处理这类数据效率足够。
  • case_when中的TRUE ~ 0用于处理两个值都不大于5的情况,若不需要该分类,可改为NA或直接删除该行。
  • 正则表达式(FF|FFPE)(\\d+)确保准确匹配列名中的前缀与数字后缀,避免配对错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 21:17:14