如何根据子字符串匹配选择 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
有一个like
功能.
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()
使用 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屋!