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

如何在R中从列名提取值并生成新列重构数据集?

在R中从列名提取值转换数据格式

核心思路

先将宽格式数据转成长期表,再拆分原列名生成所需的新属性列,用tidyverse工具包就能快速实现。

步骤示例

  1. 加载工具包
library(tidyverse)
  1. 替换为你的原始数据(这里模拟示例结构)
original_data <- tibble(
  基因ID = c("基因1", "基因2", "基因3"),
  `表达量_对照组_重复1` = c(1.2, 3.4, 5.6),
  `表达量_对照组_重复2` = c(1.3, 3.5, 5.7),
  `表达量_处理组_重复1` = c(2.1, 4.2, 6.3),
  `表达量_处理组_重复2` = c(2.2, 4.3, 6.4)
)
  1. 转换为目标格式
target_data <- original_data %>%
  # 宽表转长表:保留标识列(如基因ID),其余列转为「原列名+对应数值」的行
  pivot_longer(
    cols = -基因ID,
    names_to = "原列名",
    values_to = "数值"
  ) %>%
  # 拆分原列名生成新列:按列名里的分隔符(这里是下划线)拆分
  separate(
    col = 原列名,
    into = c("检测指标", "分组", "重复"),
    sep = "_"
  )

适配不同列名结构

  • 如果列名用点号分隔(比如表达量.对照组.重复1),把sep = "_"改成sep = "\\."
  • 如果列名无明显分隔符(比如表达量对照组重复1),改用extract配合正则表达式提取:
target_data <- original_data %>%
  pivot_longer(cols = -基因ID, names_to = "原列名", values_to = "数值") %>%
  extract(
    col = 原列名,
    into = c("检测指标", "分组", "重复"),
    regex = "(表达量)(对照组|处理组)(重复\\d)"
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:10:27