2012-03-29 4 views
0

の2つの列で行の長さが異なる(つまり2022,1765,834など)タブ区切りテキストファイルがあります。ファイルの抜粋は、今私はsimliar信号値を持つすべてのファイルからそれらのProbeIDsを見つけて、そこからヒートマップを作成したいグルーピング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  

以下の通りです。私を助けてください。必要に応じて追加データを提供することもできます。あなたは何ができるか

+0

これらのデータにはいくつの変数がありますか?つまり、すべての異なる「信号」列を同じ変数と見なすことができますか?すべてのテキストファイルを 'ProbeID'と' Signal'の2つの列にまとめて組み合わせたり、 'A.Signal'、' B.Signal'などを別にする必要があるのでしょうか? – Ben

+0

類似の値のメトリックは何ですか? – aatrujillob

+0

@Ben ProbeIDとSignalの2つの列に結合するのは良い考えですが、異なる信号値を持つA.Signal、B.Signalに対して同じProbeIDがあるかもしれません。その場合は、それを意味することができます。 – Dinesh

答えて

1

は、3つの列を持つファイルを作成することです:

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

はその後、1つの形式の少なくとも分離されたファイルを持っています。これにより、データ表現分析に使用されている多くのクラスタ方法論の1つを選択できます。 Rでは、組み込みのクラスタリング関数(clust、kmeansなど)を見つけることができます。

私のアドバイスは、Rでいくつかのクラスタリングアルゴリズムを見つけて、データで試してみることです。クラスタリングアルゴリズムごとにヒートマップをプロットし、それらを比較する。しかし、最も重要なのは、各クラスタリングアルゴリズムの仕組みを理解することです。

0

提供されたデータのサブセットには、定期的なProbeIDは含まれていません。しかし、実際のデータがそうであれば、この答えは興味深いかもしれません。

あなたはコメント(おかげ@GGrothendieck)で参照Q & AIに基づいて、ProbeIDでテキストファイル内のデータをマージしたい場合:

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) 
関連する問題