本质上,我试图做一系列的y轴上的log2倍数变化和y轴上的平均数(观察结果是基因)。这些通常被称为MA图。我遇到的问题是将我的数据转化为正确的形式。我可以通过一个循环做到这一点,但想知道正确的做法。R dplyr如何总结
在这一点上,我有两个数据框:我的设计矩阵和我的数据矩阵。设计矩阵看起来像这样(称之为ED_df):
SampleID Patient Grade Batch
MD48L_2_B_L1 MD48 G2 Feb15
MD48R_3_B_L1 MD48 G3 Feb15
MD53L_2_B_L1 MD53 G2 Feb15
MD53R_3_B_L1 MD53 G3 Feb15
MD58L_2_B_L1 MD58 G2 Sep15
MD58R_3_B_L1 MD58 G3 Sep15
dim(ED_df)
# [1] 18 6
每行是一个独特的样本。每个样本来自患者+等级+批次。在这种情况下,所有患者都在成绩(G2或G3)附近配对。总共有3个批次。两个患者横过间歇1和2或批次2和3
我的数据矩阵看起来像这样(称之为data_df)复制:
Gene MD48L_2_B_L1 MD48R_3_B_L1 MD53L_2_B_L1 MD53R_3_B_L1 MD58L_2_B_L1
1 ENSG00000000003 364.26079 329.28730 531.52188 371.67413 275.745038
2 ENSG00000000005 18.92264 49.89201 42.18428 19.42548 1.948728
3 ENSG00000000419 270.59373 261.65590 284.74386 414.41018 293.283591
4 ENSG00000000457 145.70432 125.28439 122.33440 129.50318 148.103342
dim(data_df)
# [1] 31707 18
每列对应于一个独特的样品。
我想要做的是对于每个基因,在每个患者批次集内获得log2倍数变化(G3/G2)。另外,我希望为每个患者批处理组获得平均值(G3,G2)。
然后我会把它绘制成一个MA图。
再一次,我可以看到如何通过嵌套for循环痛苦地做到这一点,我想要做的是弄清楚如何通过某种聚合函数做到这一点。
整理数据!使用'tidyr :: gather'将您的数据矩阵转换为一个数据框,其中包含'Gene','SampleID'和'Value'列,然后加入到'ED_df'中以获得成绩,批次和患者列。 – Gregor
谢谢。我认为你所说的是以长格式将因子信息作为附加列,是正确的吗?在这种格式下,基因也是我想的一个因素。此时,您可以使用FUN = sum或/?做一次总计价值〜基因+患者+批+ +分级。 –