我目前正在绘制火山图,以便我需要计算倍数变化和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值。然后火山地块将是直截了当的。
答案 0 :(得分:1)
您可以使用rowsum
:使用R
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