2013-09-23 118 views
-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。然後合併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值的變量對。然後火山地塊將是直截了當的。使用來自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 

mtcars數據示例如果要概括:

回答

1

您可以使用爲rowsum 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 
+1

+1。尼斯;我不知道'rowsum' – Frank

+0

@Metrics是的,可以工作。但問題在於,對於我的數據,腳本將像group <-c(rep(1,3),2,rep(3,3),4,rep(5,3)... 78 )這不是很方便。 –

+0

在這種情況下,您可以使用「通用代碼」。查看更新後的答案。 – Metrics