我有一个看起来像这样的矢量:
data <- c("0115", "0159", "0256", "0211")
我想根据矢量的前2个元素过滤数据。例如:
第1组 - 以01
第2组 - 以02
知道怎么做到这一点吗?
答案 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"