繁体   English   中英

匹配R中单元格中的两个部分字符串

[英]matching two partial strings in a cell in R

我读过其他文章,例如:

选择行中的列具有类似“ hsa ..”(部分字符串匹配)的字符串的行

如何在名称包含特定字符串的R数据框中选择变量?

子集数据仅包含名称与条件匹配的列

但大多数都是简单的解决方法:

  1. 他们只有一个字符串要匹配
  2. 他们只有一个匹配的部分字符串

所以我在这里寻求帮助。

假设我们有一个示例数据表,如下所示:

sample = data.table('Feb FY2016', 50)
sample = rbind(sample, list('Mar FY2017', 30))
sample = rbind(sample, list('Feb FY2017', 40))
sample = rbind(sample, list('Mar FY2016', 10))
colnames(sample) = c('month', 'unit')

我如何子集数据,以便我的数据仅包含“月”列满足以下要求的行:

  1. 有2016年
  2. 以“ Mar”或“ Feb”开头

谢谢!

由于grep返回其匹配项的索引,因此它将返回与模式匹配的行,并可用于子集。

sample[grep('^(Feb|Mar).*2016$', sample$month),]

#         month unit
# 1: Feb FY2016   50
# 2: Mar FY2016   10

正则表达式寻找

  • ^的开始;
  • 其次是FebMar (Feb|Mar)
  • 任何字符. 重复0到很多次* ;
  • 恰好是2016
  • 然后是字符串$的结尾。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM