我如何在R中得到列中一段之后的每个字符?

wi3ka0sx  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(102)

Fake City, TX Court House
我想返回:Court House
这是我从另一个帖子得到的。我用它来提取城市的碎片。

gsub(",.*$", "", COLUMN$Entity)

我的直觉告诉我,“,.*$将不得不改变,但我不知道要改变它。
我对正则表达式不熟悉。谢谢你们

5tmbdcev

5tmbdcev1#

请尝试

# Input string
input_string <- 'Fake City, TX Court House'

# Use regular expression to extract 'Court House'
extracted_text <- gsub('.*\\,\\s\\w+\\s', '', input_string)

[1] "Court House"
yzxexxkh

yzxexxkh2#

x <- c("Fake City, TX Court House", "Fake City, TX")
sub(".*\\b[A-Z]{2}\\b\\s?", "", x)
# [1] "Court House" ""

R有一个内置的状态缩写字符向量。我们可以使用它来构造一个正则表达式,以拆分州缩写的字符串并获取其后的所有内容。

library(stringr)

x <- c("Fake City, TX Court House",
       "Fake City, OK Court House",
       "Fake City, PA",
       "CArlsbad, CA Court House")

str_split_i(x, str_c("\\b", state.abb, "\\b\\s", collapse = "|"), 2)
# [1] "Court House" "Court House" NA            "Court House"

这就是正则表达式的样子(“匹配单词'AL'后跟一个空格 * 或 * 单词'AK'后跟一个空格...”):

str_c("\\b", state.abb, "\\b\\s", collapse = "|")
"\\bAL\\b\\s|\\bAK\\b\\s|\\bAZ\\b\\s|\\bAR\\b\\s|\\bCA\\b\\s|\\bCO\\b\\s|\\bCT\\b\\s|\\bDE\\b\\s|\\bFL\\b\\s|\\bGA\\b\\s|\\bHI\\b\\s|\\bID\\b\\s|\\bIL\\b\\s|\\bIN\\b\\s|\\bIA\\b\\s|\\bKS\\b\\s|\\bKY\\b\\s|\\bLA\\b\\s|\\bME\\b\\s|\\bMD\\b\\s|\\bMA\\b\\s|\\bMI\\b\\s|\\bMN\\b\\s|\\bMS\\b\\s|\\bMO\\b\\s|\\bMT\\b\\s|\\bNE\\b\\s|\\bNV\\b\\s|\\bNH\\b\\s|\\bNJ\\b\\s|\\bNM\\b\\s|\\bNY\\b\\s|\\bNC\\b\\s|\\bND\\b\\s|\\bOH\\b\\s|\\bOK\\b\\s|\\bOR\\b\\s|\\bPA\\b\\s|\\bRI\\b\\s|\\bSC\\b\\s|\\bSD\\b\\s|\\bTN\\b\\s|\\bTX\\b\\s|\\bUT\\b\\s|\\bVT\\b\\s|\\bVA\\b\\s|\\bWA\\b\\s|\\bWV\\b\\s|\\bWI\\b\\s|\\bWY\\b\\"

字边界\\b的使用防止状态缩写与字符串的其他部分匹配(例如卡尔斯巴德中的“CA”)。
如果TX是你唯一关心的问题,那么这可以简化:

str_split_i("Fake City, TX Court House", "TX ", 2)

类似的基础R溶液:

sapply(strsplit("Fake City, TX Court House", "TX "), `[`, 2)
uwopmtnx

uwopmtnx3#

这是怎么回事

text <- "Fake City, TX Court House"

# Use regular expression to extract "Court House"
result <- sub(".*, TX (.*)", "\\1", text)

# Print the result
print(result)

"Court House"

相关问题