从数据集中对多个数据点进行子集化

时间:2012-05-29 13:06:50

标签: r subset

我正在尝试从庞大的数据集中提取子集。以下代码用于从数据集中提取单个数据点。

   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 个答案:

答案 0 :(得分:2)

或者您可以将这些查询合并到一个正则表达式

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

答案 1 :(得分: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更快。