我有几个已处理的微阵列数据(标准化,.txt文件),我想从中提取300个候选基因(ILMN_ID)的列表。我在输出中不仅需要基因名称,还需要表达式值和统计信息(已存在于原始文件中)。 我有2个数据帧:
normalizedData
在第一列中带有标识符(基因名称),名为" Name"。 candidateGenes
,其中一列名为"名称",包含标识符。我已经尝试了
1)。
all=normalizedData
subset=candidateGenes
x=all%in%subset
2)。
all[which(all$gene_id %in% subset)] #(as suggested in other bioinf. forum)#,
但它返回一个包含0列和> 4000行的Dataframe。这是不正确的,因为normalizedData有24列并比较它们,但我总是得到错误。
关键是能够将所有(" Name")的第一列与子集进行比较。这是信息:
> class(all)
> [1] "data.frame"
> dim(all)
> [1] 4312 24
> str(all)
> 'data.frame':4312 obs. of 24 variables:
$ Name: Factor w/ 4312 levels "ILMN_1651253": 3401..
$ meanbgt:num 0 ..
$ meanbgc: num ..
$ cvt: num 0.11 ..
$ cvc: num 0.23 ..
$ meant: num 4618 ..
$ stderrt: num 314.6 ..
$ meanc: num 113.8 ...
$ stderrc: num 15.6 ...
$ ratio: num 40.6 ...
$ ratiose: num 6.21 ...
$ logratio: num 5.34 ...
$ tp: num 1.3e-04 ...
$ t2p: num 0.00476 ...
$ wilcoxonp: num 0.0809 ...
$ tq: num 0.0256 ...
$ t2q: num 0.165 ...
$ wilcoxonq: num 0.346 ...
$ limmap: num 4.03e-10 ...
$ limmapa: num 4.34e-06 ...
$ SYMBOL: Factor w/ 3696 levels "","A2LD1",..
$ ENSEMBL: Factor w/ 3143 levels "ENSG00000000003",..
以下是有关子集的信息:
> class(subset)
[1] "data.frame"
> dim(subset)
>[1] 328 1
> str(subset) 'data.frame': 328 obs. of 1 variable:
$ V1: Factor w/ 328 levels "ILMN_1651429",..: 177 286 47 169 123 109 268 284 234 186 ...
我真的很感谢你的帮助!
答案 0 :(得分:0)
您需要做的是
all[all$Name %in% subset$V1, ]
使用data.frame时,深入了解具有您实际想要使用的数据的正确列非常重要。您需要知道哪些列具有匹配的ID。这个解决方案与您尝试过的其他建议或其他事情真正不同的唯一方式。
同样重要的是要注意,在按行对数据帧进行子集化时,需要使用[,]
语法,其中逗号前面的向量表示行,后面的向量表示列。在这里,由于您需要所有列,我们将其留空。