多くの場合、データをダウンロードして、式レベルの違いを知りたいと思うでしょう。サンプルごとに複数のプローブを使用できるため、事態は複雑になります。
次の例では、2つのサンプル(つまり、1と4)しかありません。
ファイルdata
は次のようになります
ProbeID SampleID ExperimID Value Type
1 2747406 1 2 6.449200 AFFEXON
2 2747407 4 2 6.455550 AFFEXON
3 2747408 1 2 6.534564 AFFEXON
4 2747408 4 2 6.453523 AFFEXON
..etc
手元の問題を確認するには、サンプル1と4を抽出し、ベクトルの長さが一致するかどうかを確認します。
Sample1 <- data[ data$SampleID == 1, ] #Extract from data where SampleID == 1
Sample4 <- data[ data$SampleID == 4, ] #Extract from data where SampleID == 4
dim(Sample1) #Return length of row and col using dim()
[1] 1012703 5
dim(Sample4)
[1] 1411399 5
上記のように、プローブの数はサンプル間で等しくありません。これにより、ダウンストリーム分析用のベクトル長が等しくなくなり、2つのサンプル間で発現レベルを比較することが困難になります。したがって、観測値が欠落していないプローブを見つける必要があります(つまり、2つのサンプルがあるため、2つのヒットまたは頻度が2のプローブが必要であり、1つのヒットプローブを無視します。これにより、等しいベクトル長が生成され、比較できるようになります。 2つのサンプル間の発現レベル。
これを行う1つの方法は次のとおりです。
probeTbl <- table(data[,1]) #Export probes into a table
head(probTbl) #Notice freq! We don't want the 1 hit ones.
2315101 2315102 2315103 ...
2 1 1
probeToSample <- which(probeTbl == 2) #Export only those with 2 observations
head(probeToSample) #Check that probes -> to new variable
2315101 2315102 2315103 ...
1 2 3
numericPtoS <- as.numeric #Extract probeToSample as numeric vector
(names(probeToSample))
WorkingData <- data[,1] %in% numericPtoS #Use %in% logic operator to match original
#data with new vector numericPtoS, which
#contains desired hits or observations == 2
誰かがより良い方法を持っているなら、チップインしてください。。