【问题标题】:Subset from data frame using vector with multiple使用具有多个向量的数据帧的子集
【发布时间】:2016-03-08 14:45:15
【问题描述】:

我有一个由来自不同实验/条件的数据(样本)组成的大型数据集。我制作了一个数据框(Data_Design),在其中为每个样本分配了experiment.nr 和条件。

> Data
              Samp1      Samp2      Samp3     Samp4     Samp5     Samp6
    GeneA        10         4          2         3          2        3       
    GeneB        3          335        12        12         2        23
    GeneC        5          6          2         3          243      3
    GeneD        122        132        132       21         22       34


> Data_Design
             Exps       Conds
Samp1        Exp1       CondA       
Samp2        Exp1       CondB    
Samp3        Exp2       CondC    
Samp4        Exp2       CondB    
Samp5        Exp3       CondB
Samp6        Exp3       CondC

现在我想制作一个脚本,允许我提供几个感兴趣的实验/条件作为输入(带有变量),然后它将提取相应的数据。像这样:

> condition <- c("CondA","CondB")
> experiment <- c("Exp2","Exp3")

 >     Data.new <-  Data[, Data_Design$Conds == condition & Data_Design$Exps == experiment]

结果将是:

> Data.new
              Samp4     Samp5
    GeneA     3          2       
    GeneB     12         2        
    GeneC     3          243      
    GeneD     21         22       

在这种情况下,应允许所有选项,即 Exp2/CondA、Exp2/CondB、Exp3/CondA 或 Exp3/CondB。

但是,到目前为止,我还没有让它工作。我想我通过分配“条件”和“实验”做错了什么,我不应该使用向量?

有没有人有好的建议/例子?

【问题讨论】:

    标签: r dataframe subset


    【解决方案1】:

    可能有更好的方法来做到这一点,但目前,这可行。注意:在Data_Design 中,我将所有Samps 放在名为Samp 的列中,而不是将它们作为行名。

    inputs <- expand.grid(experiment, condition, stringsAsFactors = FALSE)
    names(inputs) <- c('Exps', 'Conds')
    
    inputs <- merge(inputs, Data_Design, by = c('Exps', 'Conds'), all.x = TRUE)
    
    Data[, inputs$Samp[!is.na(inputs$Samp)]]
    ##      Samp4 Samp5
    ##GeneA     3     2
    ##GeneB    12     2
    ##GeneC     3   243
    ##GeneD    21    22
    

    【讨论】:

      猜你喜欢
      • 2013-06-14
      • 1970-01-01
      • 2018-09-06
      • 2020-07-22
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 2019-10-05
      相关资源
      最近更新 更多