簡體   English   中英

使用具有多個的向量從數據幀中獲得子集

[英]Subset from data frame using vector with multiple

我有一個由來自不同實驗/條件的數據(樣本)組成的大型數據集。 我制作了一個數據框(Data_Design),在其中為每個樣本分配了Experiment.nr和condition。

> 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。

但是,到目前為止,我還沒有開始工作。 我猜我通過分配“條件”和“實驗”做錯了事,我不應該使用向量嗎?

有人有好的建議/例子嗎?

也許有更好的方法可以執行此操作,但是目前為止,此方法可行。 注意:在Data_Design ,我將所有Samp放在稱為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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM