为r中的某列使用以特定字符串结尾的行对数据进行子集设置
我想将我的数据子集,其中名称以string TRUST,LIMITED,INC.结尾 数据如下所示为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 我尝试了以下方法,但在多种情况下
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