2012-05-29 87 views
1

我想從一個巨大的數據集中提取一個子集。以下代碼用於從數據集中提取單個數據點。子集數據集中的多個數據點

write.csv(subset(project, grepl("^UN1705.* ", Trial_group)), file="kiki.csv") 

如何告訴R我想提取多個數據點?我試過逗號,分號等等,但是毫無效果:

write.csv(subset(project, grepl("^UN1705, UN1706.* ", Trial_group)), file="kiki.csv") 

回答

2

或者你可以在一個正則表達式結合這些查詢

grepl("^UN1705.* |^UN1706.* ", Trial_group) 
1

要合併的邏輯載體,使用&|,對AND和OR分別。

grepl("^UN1705.* ", Trial_group) & grepl("^UN1706.* ", Trial_group) 

只是爲了好玩,基準!

Trial_group <- sample(letters,10^5,replace=TRUE) 
library(microbenchmark) 
microbenchmark(
    grepl("^b.*|^c.*", Trial_group) , 
    grepl("^b.*", Trial_group) | grepl("^c.*", Trial_group) 
) 

Unit: milliseconds 
                expr  min  lq median  uq  max 
1       grepl("^b.*|^c.*", Trial_group) 15.25969 15.73327 15.95457 16.37784 18.89444 
2 grepl("^b.*", Trial_group) | grepl("^c.*", Trial_group) 27.39136 28.18150 28.65988 29.47160 49.31859 

看起來像在正則表達式中做邏輯OR更快。