合并特定数量的行

时间:2013-09-23 17:49:58

标签: r

我目前正在绘制火山图,以便我需要计算倍数变化和p值。数据非常大,所以我先在R中做了一些修改。

table <- read.csv("Sample_OTU_table.csv")
head(table)
table <- matrix(colMeans(table[,2:157]))

现在你可以看到一个156X1的矩阵

> head(table)
      [,1]
[1,] 0.3950838
[2,] 0.1429951
[3,] 0.1280243
[4,] 0.1098179
[5,] 0.1831748
[6,] 0.3418168

这是一列中每个20000+数据的平均值。

我正在考虑合并行,例如row1,row2,row3,计算其平均值(在本例中,它是(0.39 + 0.14 + 0.12)/ 3),并保留row4。然后合并row5,row6,row7并离开row8。因此矩阵将是78X1矩阵。然后使用代码

newpairs <- as.matrix(pairs, nrow=2, byrow=TRUE)

我们可以将矩阵分成两列X 39行矩阵,然后使用包simpleaffy,函数

pc <- get.fold.change.and.t.test(eset.rma,"table",c(",1",",2"))

将给出对变量的倍数变化和p值。然后火山地块将是直截了当的。

1 个答案:

答案 0 :(得分:1)

您可以使用rowsum:使用R

中的mtcars数据的示例
mymat<-as.matrix(mtcars[1:7,1])
group<-c(rep(1,3),2,rep(3,3))
xsum <- rowsum(mymat, group)
> xsum
  [,1]
1 64.8
2 21.4
3 51.1

如果你想概括: mymat是你的矩阵

set.seed(1)
mymat<-as.matrix(rnorm(156))

 head(mymat)
           [,1]
[1,] -0.6264538
[2,]  0.1836433
[3,] -0.8356286
[4,]  1.5952808
[5,]  0.3295078
[6,] -0.8204684
x<-rep(seq(1,nrow(mymat)/2,2),each=3)
y<-seq(2,nrow(mymat)/2,2)
z<-c(x,y)
group<-sort(z)
xsum <- rowsum(mymat, group)

head(xsum)
         [,1]
1 -1.27843910
2  1.59528080
3 -0.00353156
4  0.73832471
5  1.78217413
6  0.38984324


  dim(xsum)
[1] 78  1