0

多くの場合、データをダウンロードして、式レベルの違いを知りたいと思うでしょう。サンプルごとに複数のプローブを使用できるため、事態は複雑になります。

次の例では、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

誰かがより良い方法を持っているなら、チップインしてください。。

4

1 に答える 1

1

新しい答えではありませんが、より完全な例と、もう少し普遍的なものにするためのいくつかのマイナーな改善かもしれません。

私の例には 2 つのプローブが含まれています。1 つは 3 つのサンプルに存在し、もう 1 つは 2 に存在します。サンプルの数を動的にチェックします (ハードコードされx==2た .

これがあなたが探している動作であることを確認できますか? もしそうなら、ここからさらに改善できるかもしれません。

data <- read.table(text="ProbeID      SampleID ExperimID    Value    Type
 1 2747406        1         2      6.449200 AFFEXON
 2 2747407        1         2      6.455550 AFFEXON
 3 2747406        4         2      6.349200 AFFEXON
 4 2747407        4         2      6.755550 AFFEXON
 5 2747406        5         2      6.755550 AFFEXON")

freq <- table(data[,1])      #Export the probes into a table (with frequencies) 
compProbes <- freq[freq==max(freq)]  #Create new variable that contains probes with NO missing obs by identifying the probe with the maximum number of occurrences
compProbes <- as.numeric(names(compProbes)) #Extract name as numeric vector 
compRows <- data[,1] %in% compProbes    #Use %in% logic operator to match z and with probes=TRUE
newdata <- data[compRows,]
于 2012-12-05T04:34:28.590 に答える