2012-03-29 28 views
0

我有兩列但行長不同的製表符分隔文本文件(即2022,1765,834等)。該文件的摘錄如下分組類似的值在R

ProbeID  A.Signal ProbeID B.Sigal ProbeID C.Signal ProbeID D.Signal 
    13567  163.452 41235 145.678 34562 145.225 12456 143.215 
    3452  175.345 42563 231.678 52136 167.322 67842 456.178 
    1358  189.321 31256 193.564 15678 189.356 35134 167.324 
    46345  234.567 25672 456.124 14578 456.234 18764 234.125 
    65623  156.234      96432 125.678 7821 145.678 
    86512  178.321      45677 896.234     
              45677 143.896  

給出現在我想從具有simliar信號值的所有文件,找到那些ProbeIDs並創建一個熱圖出來。請幫助我。如果需要,我還可以提供任何額外的數據。

+0

這些數據中有多少變量?我的意思是,所有不同的'Signal'列可以被認爲是同一個變量嗎?將所有的文本文件合併到ProbeID和Signal兩列中,還是需要將'A.Signal','B.Signal'等分開?是否有效? – Ben 2012-03-29 08:09:13

+0

相似價值的指標是什麼? – aatrujillob 2012-03-29 08:38:58

+0

@Ben將ProbeID和Signal組合成兩列是一個很好的想法,但是對於A.Signal,B.Signal可能有不同的信號值的ProbeID。在這種情況下,我們可以指它。 – Dinesh 2012-03-29 08:46:50

回答

1

你可以做的是建立一個檔案,三列:

 
Probe.ID | Signal | Type 
13567 | 163.452 | A 
41235 | 145.678 | B 
... 

然後,你必須在一個格式至少分隔的文件。有了這個,您可以選擇數據表達式分析中使用的許多羣集方法之一。在R中可以找到內置的聚類函數(例如clust,kmeans)。

我的建議是在R中找到一些聚類算法,並在您的數據上進行嘗試。繪製每個聚類算法的熱圖並對其進行比較。但最重要的是瞭解每個聚類算法是如何工作的。

0

您提供的數據的子集不包含任何重複出現的ProbeID。但是,如果真實數據確實存在,這個答案可能會引起人們的興趣。

如果要合併由ProbeID文本文件中的數據,基於Q & AI在註釋中引用(感謝@GGrothendieck):

df1<-data.frame(ProbeID=c(13567,3452,1358,46345,65623,86512), 
    A.Signal=c(163.452,175.345,189.321,234.567,156.234,178.321)) 

df2<-data.frame(ProbeID=c(41235,42563,31256,25672), 
    B.Signal=c(145.678,231.678,193.564,456.124)) 

df3<-data.frame(ProbeID=c(34562,52136,15678,14578,96432,45677,45677), 
    C.Signal=c(145.225,167.322,189.356,456.234,125.678,896.234,143.896)) 

df4<-data.frame(ProbeID=c(12456,67842,35134,18764,7821), 
    D.Signal=c(143.215,456.178,167.324,234.125,145.678)) 

run.seq <- function(x) as.numeric(ave(paste(x), x, FUN = seq_along)) 

L <- list(df1, df2, df3, df4) 
L2 <- lapply(L, function(x) cbind(x, run.seq = run.seq(x$ProbeID))) 

out <- Reduce(function(...) merge(..., all = TRUE), L2)[-2] 

對象out後會有一個data.frame是例如,您可以通過查找每個探針的信號均值來分析。

out$theRowMean<-rowMeans(out[,grep("Signal",names(out))],na.rm=TRUE) 

theProbeMeans<-tapply(out$theRowMean,out$ProbeID,mean)