-1

我目前正在绘制一个火山图,以便我需要计算倍数变化和 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。然后合并第5行、第6行、第7行并离开第8行。这样矩阵将是一个 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 值。那么火山图就很简单了。

4

1 回答 1

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
于 2013-09-23T17:56:08.143 回答