R 如何从标准化微阵列列表中生成候选基因的子列表/提取表达数据

R 如何从标准化微阵列列表中生成候选基因的子列表/提取表达数据,r,dataframe,R,Dataframe,我有几个经过处理的微阵列数据(标准化的.txt文件),我想从中提取300个候选基因(ILMN_ID)的列表。我不仅需要在输出中输入基因名称,还需要表达式值和统计信息(已存在于原始文件中)。 我有两个数据帧: normalizedData,第一列中的标识符(基因名称)名为“Name” candidateGenes具有一个名为“Name”的列,其中包含标识符 我试过了 1) 2) 但是它返回一个0列>4000行的数据帧。这是不正确的,因为normalizedData有24列并比较它们,但我总是得

我有几个经过处理的微阵列数据(标准化的.txt文件),我想从中提取300个候选基因(ILMN_ID)的列表。我不仅需要在输出中输入基因名称,还需要表达式值和统计信息(已存在于原始文件中)。 我有两个数据帧:

  • normalizedData
    ,第一列中的标识符(基因名称)名为“Name”
  • candidateGenes
    具有一个名为“Name”的列,其中包含标识符
  • 我试过了

    1)

    2)

    但是它返回一个0列>4000行的数据帧。这是不正确的,因为normalizedData有24列并比较它们,但我总是得到错误

    关键是能够将所有的第一列(“名称”)与子集进行比较。以下是信息:

    > 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 ...
    
    我真的很感谢你的帮助

    你需要做的是

    all[all$Name %in% subset$V1, ]
    
    在使用data.frame时,重要的是要向下钻取包含实际要使用的数据的正确列。您需要知道哪些列具有匹配的ID。这是这个解决方案真正不同于其他建议或您尝试过的其他方法的唯一方式


    还需要注意的是,当按行对data.frame进行子集设置时,需要使用
    [,]
    语法,其中逗号前的向量表示行,逗号后的向量表示列。这里,因为您需要所有列,所以我们将其保留为空。

    我猜“all”是一个(二维)数据帧,因此应该是带有两个下标的子集,
    all[其中(所有$gene_id%在%subset中),]
    ,其中逗号后的“empty”信息表示您要选择所有列。感谢@MartinMorgan的建议,但现在,反过来,我得到0行24列。我想要的是,首先在规范化数据中找到候选基因(子集)中登记的基因(行中超过4000个基因ID)。然后,我想提取与每行相关的信息。这应该是一个简单的过程,但我无法运行它。我认为您需要更明确地说明
    all
    的结构,例如,报告
    class(all)
    dim(all)
    的结果,或者可能
    str(all)
    。或者可能
    dput(head(all))
    dput(head(subset))
    。从您的描述中不可能知道这些变量可能是什么数据类型。给出一个小测试数据集总是有帮助的,这样我们就可以测试可能的解决方案。@pmedi当人们询问更多细节时,您应该编辑原始问题,而不是将其发布在评论中。在这个问题上,它们可以被格式化成实际可读的格式。这很有效!谢谢我得到了我想要的子集。这只是一个数据移位:第一列包含as name meanbgt和as data all id等等。。。最后一列没有名称,只有最后一个数据。但我可以接受。再次感谢!我修好了。这只是保存文件时的一个问题。
    > 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 ...
    
    all[all$Name %in% subset$V1, ]