如何用R实现基因表达表格的宽格式转换?
长格式基因表达表转宽格式的dcast报错解决
错误原因
你之前的代码错误核心在于dcast公式的语法错误:不能用c("Timepoint","SampleID")来定义分组变量,必须用+连接;另外显式指定value.var参数可以避免程序自动推断值列时的潜在问题。
正确代码
首先确保加载data.table包,然后执行以下转换:
library(data.table) # 将数据转换为data.table格式 setDT(rawDATA) # 执行宽格式转换,明确指定分组变量、列变量和值变量 formattedDATA <- dcast(rawDATA, SampleID + Timepoint ~ Gene, value.var = "log2_CPM")
SampleID + Timepoint:指定作为行标识的分组变量,对应宽表的前两列~ Gene:将Gene列的不同取值扩展为新的列名value.var = "log2_CPM":明确指定填充新列的数值来自log2_CPM列
转换结果
| SampleID | Timepoint | krt19 | sftpd1 | Cxcl13 |
|---|---|---|---|---|
| 7578 | 14 | 123 | 32 | 365 |
| 7458 | 14 | 125 | 36 | 330 |
(注:你目标表格中的krt18应为原数据中的krt19,属于笔误)
额外说明
如果你的数据集存在同一个SampleID+Timepoint+Gene组合有重复值的情况,dcast会触发报错,此时可以通过fun.aggregate参数指定聚合方式,比如取均值:
formattedDATA <- dcast(rawDATA, SampleID + Timepoint ~ Gene, value.var = "log2_CPM", fun.aggregate = mean)
内容的提问来源于stack exchange,提问作者Kushan Gunawardhana
相关产品推荐
相关产品推荐

