如何选择R data.table行基于子字符串匹配(一个类似于SQL) [英] How to select R data.table rows based on substring match (a la SQL like)

查看:85
本文介绍了如何选择R data.table行基于子字符串匹配(一个类似于SQL)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆