R语言の宽矩阵转长矩阵

2020-05-08  本文已影响0人  麦巽生信

一、长矩阵和宽矩阵

每个变量单独成一列的为宽矩阵,例如:

    N         A        C          T          G     pos
1 0.00044   0.21212   0.26264   0.05120   0.47360   1
2 0.00000   0.18766   0.28970   0.32026   0.20238   2
3 0.00000   0.19334   0.32042   0.27598   0.21026   3
4 0.00000   0.14242   0.38242   0.32514   0.15002   4
5 0.00000   0.33694   0.17736   0.30862   0.17708   5
6 0.00000   0.31716   0.15932   0.14728   0.37624   6

而长数据中变量的NACTG五种碱基类型并没有单独列成一列,而是整合在同一列。

    pos variable   value
1   1        G   0.47360
2   5        G   0.17708
3   9        G   0.25448
4  13        G   0.32480
5  17        G   0.25384
6  21        G   0.25868
7  25        G   0.25894
8  29        G   0.24990
9  33        G   0.25688
0  37        G   0.25468

上面两个矩阵表达的内容相同,宽矩阵人类好读懂,长矩阵计算机方便处理,长矩阵中一列代表变量类型,另外一列表示对用的变量值。我们的ggplot对于长矩阵的画图相当方便。

Wide- to long-format data: the melt function

首先查看一下数据:

head(res_per)
    N         A        C          T          G     pos
1 0.00044   0.21212   0.26264   0.05120   0.47360   1
2 0.00000   0.18766   0.28970   0.32026   0.20238   2
3 0.00000   0.19334   0.32042   0.27598   0.21026   3
4 0.00000   0.14242   0.38242   0.32514   0.15002   4
5 0.00000   0.33694   0.17736   0.30862   0.17708   5
6 0.00000   0.31716   0.15932   0.14728   0.37624   6

使用melt进行转换

res_per <- rbind.data.frame(gc_cont(R1),gc_cont(R2))
res_per$pos <- 1:nrow(res_per)
res_final <- melt(res_per,id.vars = c("pos"))


head(res_final)
  pos variable   value
1   1        N 0.00044
2   2        N 0.00000
3   3        N 0.00000
4   4        N 0.00000
5   5        N 0.00000
6   6        N 0.00000

之后 我们可以方便的进行绘图了~
还有些长款矩阵的互换的参数调整,我先挖个坑 争取两三天更新此文 谢谢。

上一篇 下一篇

猜你喜欢

热点阅读