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

R语言:数据格式解析与宽表转长格式数据框方法咨询

DNA甲基化数据格式解析与长格式转换

1. 数据格式解释

这是一个宽格式(wide format)的data.frame:

  • 在R中,data.frame的底层存储类型就是list(由等长向量组成的列表),所以typeof(df)返回list、class(df)返回data.frame是完全正常的——前者描述对象的底层结构,后者是它的面向对象类。
  • 具体数据结构:
    • 行名:甲基化位点ID(如cg1、cg2)
    • 列名:样本ID(如R123、R456)
    • 单元格值:对应样本在该甲基化位点的活性值

2. 转换为长格式的方法

针对大规模数据集,推荐两种高效实现方式:

方法一:tidyverse工具链(tidyr包)

直观易读,适合大数据处理:

# 加载tidyverse(或单独加载tidyr)
library(tidyverse)

# 执行转换
long_df <- df %>%
  rownames_to_column(var = "cg_site") %>%  # 将行名转为独立列
  pivot_longer(
    cols = -cg_site,  # 除cg_site外的所有列(样本列)进行转换
    names_to = "Individual_ID",  # 原列名转为样本ID列
    values_to = "value"  # 原单元格值转为活性值列
  )

方法二:基础R的reshape函数

无需额外安装包,轻量高效:

# 执行转换
long_df <- reshape(
  df,
  direction = "long",
  varying = colnames(df),
  v.names = "value",
  idvar = "cg_site",
  timevar = "Individual_ID",
  times = colnames(df)
)

# 调整格式与列顺序(可选,匹配期望输出)
rownames(long_df) <- NULL
long_df <- long_df[, c("Individual_ID", "cg_site", "value")]

转换后执行head(long_df)即可得到你期望的长格式结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:10:53