数据格式转换 | 稀疏矩阵3列还原为原始矩阵/数据框,自定义函数 df3toMatrix()

1. 输入3列

只要前三列,第一列是行名,第二列是列名,第三列为值。

复制代码
> head(df.net2.order)
       from             to   strength type
12439 CSTF2 ENST0000056844 -0.6859788  neg
12015 CSTF2 ENST0000056190 -0.5153181  neg
11208 CSTF2          GAPDH -0.4570489  neg

2. 输出数据框

行为基因调控因子,列为基因表达,值为相关系数。

复制代码
> df.net2.df=df3toMatrix(df.net2.order)
> dim(df.net2.df)
[1]   27 4022
> df.net2.df[df.net2.df==0]=NA
> df.net2.df[1:4,1:5]
       ENST0000056844 ENST0000056190      GAPDH ENST0000063431       ARL6
CSTF2      -0.6859788     -0.5153181 -0.4570489     -0.4380417 -0.4351847
NUDT21             NA     -0.4719560 -0.4080007             NA -0.4125685
CPSF3      -0.4883905     -0.3955025 -0.4318929             NA -0.4517824
CPSF1              NA     -0.3722944 -0.3625508             NA -0.3016818

3. 转换函数

复制代码
# from 3 columns to matrix: col1-row, col2-col, col2-value
df3toMatrix=function(df3){
  rows.id=df3[,1] |> unique()
  cols.id=df3[,2] |> unique()
  
  output=data.frame(matrix(0, nrow=length(rows.id), ncol=length(cols.id)))
  rownames(output)=rows.id
  colnames(output)=cols.id
  
  for(i in 1:nrow(df3)){
    output[df3[i, 1], df3[i, 2]]=df3[i,3]
  }
  output
}

ref

相关推荐
知识分享小能手2 小时前
R语言入门学习教程,从入门到精通,R语言数据处理与清洗 (9)
开发语言·学习·r语言
2601_957786773 小时前
从功能堆砌到业务闭环:现代短视频矩阵系统架构演进之路
线性代数·矩阵·系统架构
2601_957786773 小时前
全域矩阵系统运维基石:全链路可观测性技术架构与实践
矩阵·架构·全链路可观测性·分布式追踪
2601_957786773 小时前
AI 原生营销矩阵系统:分布式素材管理与多租户权限控制技术实现
人工智能·分布式·矩阵
图码4 小时前
矩阵中的“对角线强迫症”:如何优雅地判断Toeplitz矩阵?
数据结构·c++·线性代数·算法·青少年编程·矩阵
图码4 小时前
矩阵边界遍历:顺时针与图案打印的两种高效解法
数据结构·python·线性代数·算法·青少年编程·矩阵·深度优先遍历
pen-ai4 小时前
穆勒矩阵(Mueller Matrix)完全指南——从数学推导到工程应用
线性代数·矩阵
qq_296553274 小时前
矩阵对角线遍历:从暴力到最优的优雅解法
数据结构·线性代数·算法·青少年编程·矩阵·深度优先遍历
2601_957786774 小时前
星链引擎矩阵系统:全球边缘计算与三级算力调度技术实践
矩阵·边缘计算·三级算力调度
知识分享小能手21 小时前
R语言入门学习教程,从入门到精通,R语言获取数据 (8)
开发语言·学习·r语言