我读过其他文章,例如:
Selecting rows where a column has a string like 'hsa..' (partial string match)
How do I select variables in an R dataframe whose names contain a particular string?
Subset data to contain only columns whose names match a condition
但其中大部分都是简单修复:
所以我在这里寻求帮助。
假设我们有一个这样的示例数据表:
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')
如何对数据进行子集化,以便我的数据只包含“月”列满足以下要求的行:
谢谢!
答案 0 :(得分:2)
由于grep
返回匹配项的索引,因此它将返回与模式匹配的行,并可用于子集化。
sample[grep('^(Feb|Mar).*2016$', sample$month),]
# month unit
# 1: Feb FY2016 50
# 2: Mar FY2016 10
正则表达式寻找
^
; Feb
或Mar
(Feb|Mar)
; .
重复0到多次*
; 2016
确切地说; $
的结尾。