【问题标题】:subsetting multiple datapoints from dataset从数据集中对多个数据点进行子集化
【发布时间】:2012-05-29 13:06:50
【问题描述】:

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

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

如何告诉 R 我要提取多个数据点?我尝试了逗号、分号等,但没有任何效果:

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

【问题讨论】:

    标签: r subset


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      要组合逻辑向量,请使用 &|,分别表示 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 更快。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-09-26
        • 2022-06-18
        • 1970-01-01
        • 2017-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多