基于前两个元素过滤字符向量

时间:2016-08-27 21:16:15

标签: r

我有一个看起来像这样的矢量:

data <- c("0115", "0159", "0256", "0211")

我想根据矢量的前2个元素过滤数据。例如:

第1组 - 以01

开头的元素

第2组 - 以02

开头的元素

知道怎么做到这一点吗?

1 个答案:

答案 0 :(得分:2)

您可能希望使用Regular Expression(正则表达式)查找以“01”或“02”开头的字符串。

基本方法是使用grep(),它返回与模式匹配的字符串索引。这是一个例子 - 请注意我已经更改了第2和第4个数据元素,以演示如何只搜索“01”或“02”会导致错误答案:

d <- c("0115", "0102", "0256", "0201")

grep("01", d)
#> [1] 1 2 4

d[grep("01", d)]
#> [1] "0115" "0102" "0201"

因为这会在任何地方搜索“01”,所以混音中会出现“0201”。要避免,请在模式中添加“^”以指定字符串“01”开头:

grep("^01", d)
#> [1] 1 2

d[grep("^01", d)]
#> [1] "0115" "0102"

如果您使用stringr包,您也可以以相同的方式使用str_detect()

library(stringr)

d[str_detect(d, "^01")]
#> [1] "0115" "0102"