r - 列内匹配模式
问题描述
我想匹配某些单词和数字,并从数据框中子集这些行。
match_words<-data.frame("words"=c("ING","HDFC","HSBC","ROYAL"))
df <- data.frame(bank_issue = c("ING,HDFC", "ROYAL,SINGB","GR01565B,HSBC","01565,BOC","BOA,JPG001","G001"))
当我尝试使用 匹配第一个单词grep
时,我得到 2 行 match& 包含该单词,但我只需要匹配整个单词的那些行。我需要从df
.
我正在使用 grep 函数。这是我现在得到的:
grep("ING",df$bank_issue)
# [1] 1 2
而且我还需要为每一行做。
期望的输出:
1 ING ING,HDFC
2 01565 01565,BOC
3 G001 G001
有什么建议么?
解决方案
一种选择是使用单词边界元字符。
grep("\\bING\\b",df$bank_issue)
#[1] 1
如果您需要以编程方式创建这些搜索模式,您可以使用paste0
.
terms <- paste0("\\b",unlist(match_words),"\\b")
sapply(terms,function(x){grep(x,df$bank_issue)})
# \\bING\\b \\bHDFC\\b \\bHSBC\\b \\bROYAL\\b
# 1 1 3 2
推荐阅读
- c# - 是否可以从字符串/标记列表中获取左大括号的右大括号?
- python - 快速排序函数在被调用时返回 None
- sql - 更好地查询以获取过去 90 天内没有任何销售的产品列表?
- flutter - 如何使 Ink 效果填充 BottomNavigationBarItem 中的所有空间
- dart - 镖。后期初始化最终变量
- c# - 在服务器端 Blazor 中将服务注入 MainLayout.cs
- c++ - 我应该显示 N 个偶数的程序显示混乱
- python - 为什么paho python客户端发短消息而不发长消息
- sql - 异常 事务在触发器中结束。该批次已中止
- python - 使用 pandas python 分析电子表格时遇到问题