为r中的某列使用以特定字符串结尾的行对数据进行子集设置

为r中的某列使用以特定字符串结尾的行对数据进行子集设置,r,string,subset,R,String,Subset,我想将我的数据子集,其中名称以string TRUST,LIMITED,INC.结尾 数据如下所示 name date abc TRUST 2018-01-01 123 Foundation 1997-02-06 Tim LIMITED 2002-06-04 SA INC. 1968-12-28 Yu Co 2005-01-24 Coca Cola Ltd. 1980-05-30 我尝试了以下方法,但在多种情况下

我想将我的数据子集,其中名称以string TRUST,LIMITED,INC.结尾 数据如下所示

name            date
abc TRUST       2018-01-01
123 Foundation  1997-02-06
Tim LIMITED     2002-06-04
SA INC.         1968-12-28
Yu Co           2005-01-24
Coca Cola Ltd.  1980-05-30
我尝试了以下方法,但在多种情况下都不起作用

df[grepl(paste0(c("TRUST", "LIMITED", "INC", "CO"), collapse = "|"), df$name), ]
它还提取可口可乐公司的行,但我不希望这样。

我们需要单词边界(
\\b
)来避免任何非特定的匹配。此外,如果我们还想匹配
Co
,请使用
ignore.case=TRUE

df[grepl(paste0("\\b(", paste(c("TRUST", "LIMITED", "INC", "CO"), 
                 collapse = "|"), ")\\b"), df$name, ignore.case = TRUE), ]
#       name       date
#1   abc TRUST 2018-01-01
#3 Tim LIMITED 2002-06-04
#4     SA INC. 1968-12-28
#5       Yu Co 2005-01-24
数据
df要查找以给定字符串结尾的名称,必须在搜索字符串的末尾放置一个
$

df[grep("(TRUST|LIMITED|INC\\.|Co)$", df$name), ]
#         name       date
#1   abc TRUST 2018-01-01
#3 Tim LIMITED 2002-06-04
#4     SA INC. 1968-12-28
#5       Yu Co 2005-01-24
如果您正在寻找单词结尾的解决方案,可以使用前面提到的@akrun的
\\b

df[grep("(TRUST|LIMITED|INC\\.|Co)\\b", df$name), ]
#         name       date
#1   abc TRUST 2018-01-01
#3 Tim LIMITED 2002-06-04
#4     SA INC. 1968-12-28
#5       Yu Co 2005-01-24

你不是在四天前问过同样的问题吗?你几天前发布的问题,被标记为愚人,已经有了答案。如果这个答案不令人满意,那么除了再次发布相同的问题之外,还有其他方法
df[grep("(TRUST|LIMITED|INC\\.|Co)\\b", df$name), ]
#         name       date
#1   abc TRUST 2018-01-01
#3 Tim LIMITED 2002-06-04
#4     SA INC. 1968-12-28
#5       Yu Co 2005-01-24