在E列表中添加具有平均值的列

时间:2015-09-07 22:39:14

标签: arrays r bioinformatics

我只是围绕着R,并使用limma进行微阵列分析。我已经拿起了我的Control(CC)和实验(EE)数据。

我最终获得了一个具有微阵列强度结果的EList。 列是CC-1,CC-2,CC-3和EE-1,EE-2,EE-3,探针名称和系统名称 我想添加2列,分别是CC 1-3的平均值和EE 1-3的平均值,但我不确定如何做到这一点。有一种简单的方法吗?

我可以在excel中完成,但我真的想熟悉R并且流利地使用它。

1 个答案:

答案 0 :(得分:1)

首先,我使用一些伪微阵列信号值创建了一个数据帧:

d = data.frame(abs(matrix(rnorm(30,mean=5),5,6)))
cc = c('CC-1', 'CC-2', 'CC-3')
ee = c('EE-1', 'EE-2', 'EE-3')
colnames(d) = c(cc,ee)
d 
      CC-1     CC-2     CC-3     EE-1     EE-2     EE-3
1 4.775333 4.702609 6.555690 4.853671 5.391154 6.252322
2 2.819228 4.899276 3.021709 4.474202 4.432656 4.576010
3 4.329981 5.689807 4.417229 5.444785 2.603174 3.207310
4 4.657848 4.840904 5.955579 6.359203 5.093865 5.255560
5 5.631977 5.043603 5.777581 3.985867 2.387029 5.115502

然后使用apply运行一个函数,按行(cc参数计算ee列(以及第二个应用行中的1列)的平均值)。 ccee均值的向量被指定为data.frame的新列。

d$ccm=apply(d, 1, FUN=function(x) { mean(x[cc]) } )
d$eem=apply(d, 1, FUN=function(x) { mean(x[ee]) } )
d

     CC-1     CC-2     CC-3     EE-1     EE-2     EE-3      ccm      eem
1 4.775333 4.702609 6.555690 4.853671 5.391154 6.252322 5.344544 5.499049
2 2.819228 4.899276 3.021709 4.474202 4.432656 4.576010 3.580071 4.494289
3 4.329981 5.689807 4.417229 5.444785 2.603174 3.207310 4.812339 3.751756
4 4.657848 4.840904 5.955579 6.359203 5.093865 5.255560 5.151444 5.569543
5 5.631977 5.043603 5.777581 3.985867 2.387029 5.115502 5.484387 3.829466