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

查看:26
本文介绍了如何根据子字符串匹配选择 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有一个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屋!

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