2016-03-08 2 views
0

У меня есть большой набор данных, состоящий из данных (образцов) из разных экспериментов/условий. Я создал фрейм данных (Data_Design), в котором я присваивал экспериментальный параметр и условие каждому образцу.Подмножество из кадра данных с использованием вектора с несколькими

> 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/Конда, exp2/CondB, exp3/Конда или exp3/CondB.

Однако до сих пор я не получил его на работу. Думаю, я делаю что-то неправильно, назначая «условие» и «эксперимент», я не должен использовать вектор?

У кого-нибудь есть хороший совет/пример?

ответ

0

Возможно, это лучший способ сделать это, но пока это работает. Примечание: В Data_Design я помещал все Samp s в столбце 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 
Смежные вопросы