很多时候,您会下载数据并想知道表达水平的差异。事情变得复杂,因为每个样本可以有多个探针。
在以下示例中,我们只有两个样本(即 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 个样本,并忽略 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
如果有人有更好的方法,请加注。。.