2016-07-21 37 views
1

我有三個data.frame對象需要同時過濾給定的閾值。我想過濾出所有data.frame對象的給定閾值。任何人都可以給我一些可能的想法來完成這項任務?同時按給定閾值過濾掉多個data.frame對象

模擬數據:

df1 <- data.frame(
    start=seq(1, by=9, len=18), end=seq(6, by=9, len=18), 
    ID=letters[seq(1:18)], score=sample(1:25, 18, replace = FALSE)) 

df2 <- data.frame(
    start=seq(2, by=11, len=20), end=seq(8, by=11, len=20), 
    ID=letters[seq(1:20)], score=sample(1:25, 20, replace = FALSE)) 

df3 <- data.frame(
    start=seq(4, by=11, len=25), end=seq(9, by=11, len=25), 
    ID=letters[seq(1:25)], score=sample(1:25, 25, replace = FALSE)) 

我嘗試溶液如下:

濾除給定閾值:

df.li <- list(df1, df2, df3) 
keep <- obj$score <= 12 

test <- lapply(df.li, function(ele_) { 
    keep <- ele_$score <= 12 
    discard <- ele_[!keep] 
    res <- data.frame(kee=keep, 
        dis=discard) 
    return(res) 
}) 

我所需的輸出:

如果這種方法可能發生,我將爲每個data.frame對象的列表過濾輸出組。

我認爲可能有更好的方法來做到這一點。關於我提出的問題,有什麼更好的方法來完成這項任務?任何人都可以指出我解決這個問題的可能方法嗎?提前致謝。

回答

3

你可以嘗試:

lst <- list(df1, df2, df3) 

library(dplyr) 
lapply(lst, function(x) { filter(x, score <= 12) }) 

或按由@akrun mentionned,在基地R

lapply(lst, function(x) { subset(x, score <= 12) }) 
+0

感謝所有種類的青睞你。乾杯 – Jeff

+1

@Jurat很高興它幫助:) –

+0

我想總結過濾後的每個data.frame對象的保持和非保持實例的集合。任何方式來實現這個輸出?非常感謝 – Jeff