如何选择R data.table行基于子字符串匹配(一个类似于SQL) [英] How to select R data.table rows based on substring match (a la SQL like)
问题描述
我有一个data.table与一个字符列,并希望只选择其中包含子字符串的那些行。相当于SQL WHERE x LIKE'%substring%'
I have a data.table with a character column, and want to select only those rows that contain a substring in it. Equivalent to SQL WHERE x LIKE '%substring%'
例如
> Months = data.table(Name = month.name, Number = 1:12)
> Months["mb" %in% Name]
Empty data.table (0 rows) of 2 cols: Name,Number
如何只选择Name包含mb的行?
How would I select only the rows where Name contains "mb"?
推荐答案
data.table
有像
函数。
Months[like(Name,"mb")]
Name Number
1: September 9
2: November 11
3: December 12
或者,%like%
看起来更好:
> Months[Name %like% "mb"]
Name Number
1: September 9
2: November 11
3: December 12
请注意,%like%
和 like c $ c>使用
grepl
(返回逻辑向量)而不是 grep
(返回整数位置)。因此,它可以与其他逻辑条件组合:
Note that %like%
and like()
use grepl
(returns logical vector) rather than grep
(returns integer locations). That's so it can be combined with other logical conditions :
> Months[Number<12 & Name %like% "mb"]
Name Number
1: September 9
2: November 11
,你会得到正则表达式搜索的力量(不仅仅是%或*通配符)。
and you get the power of regular expression search (not just % or * wildcard), too.
这篇关于如何选择R data.table行基于子字符串匹配(一个类似于SQL)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!