提问人:Antonio 提问时间:9/23/2023 更新时间:10/4/2023 访问量:70
如何在R中的关键字前添加逗号?
How to add a comma before keywords in R?
问:
我目前有一个城市的数据帧/向量,其末尾的单词以以下任何一项开头:Util、Municipal、Police、Water 或末尾的 #。
如何从:
山坳 |
---|
假市法院 |
假装水务公司市 |
非真实市警察局 |
欺诈山实用程序 |
El Imagined 第 344 地方法院 |
对此:
山坳 |
---|
德克萨斯州法克市法院 |
德克萨斯州假装市自来水公司 |
德克萨斯州非真实之城警察局 |
德克萨斯州欺诈山公用事业公司 |
德克萨斯州埃尔想象第 344 地方法院 |
我目前的代码是:
DATA %>%
mutate(col = str_replace(col, "(?i)(?>=(UTIL | MUNICIPAL | Police | Water | ^([0-9]+)")),?\\s", ", TX"))
我认为每个关键字都正确包含在此表达式中。我绝对不确定的是,我是否弄错了数字。
答:
0赞
Wiktor Stribiżew
9/27/2023
#1
你可以使用
x <- c("City of Fake Municipal Court", "City of Pretend Water Utility","City of Not Real Police Department","Fraud Hill Utility","El Imagined 344th District Court")
regex <- "(?i)\\s*\\b(util(?:it(?:y|ies))?|MUNICIPAL|Police|Water|[0-9]+(?:st|[rn]d|th)?)(?:,?\\s)?"
trimws(sub(regex, ", TX ", x, perl=TRUE))
请参阅正则表达式演示和 R 演示。注意将仅替换第一个匹配项,并且是 PCRE 模式使用所必需的。sub
perl=TRUE
sub
图案细节:
(?i)
- 模式不区分大小写\s*
- 零个或多个空格\b
- 单词边界(util(?:it(?:y|ies))?|MUNICIPAL|Police|Water|[0-9]+(?:st|[rn]d|th)?)
- 第 1 组:要么后跟一个可选,后跟 or 、 、 或 或 ,要么后跟一个或多个数字,后跟 ,或者 ,或者 ,或者util
it
y
ies
MUNICIPAL
Police
Water
st
r
n
d
th
(?:,?\s)?
- 一个可选的非捕获组,匹配一个或零个可选逗号,然后是一个空格字符。
0赞
Umar
10/4/2023
#2
library(dplyr)
# Create a dataframe with the given data
df <- data.frame(
Col = c(
"City of Fake Municipal Court",
"City of Pretend Water Utility",
"City of Not Real Police Department",
"Fraud Hill Utility",
"El Imagined 344th District Court"
)
)
# Define a regular expression pattern
regex_pattern <- "(?i)\\b(util(?:it(?:y|ies))?|MUNICIPAL|Police|Water|[0-9]+(?:st|[rn]d|th)?)(?:,?\\s)?"
# Use mutate to modify the Col column
df <- df %>%
mutate(Col = str_replace_all(Col, regex_pattern, ", TX \\1"))
# Display the modified dataframe
print(df)
修改后的数据框架将给出为
Col
1 City of Fake , TX MunicipalCourt
2 City of Pretend , TX Water, TX Utility
3 City of Not Real , TX PoliceDepartment
4 Fraud Hill , TX Utility
5 El Imagined , TX 344thDistrict Court
- (?i) 使正则表达式不区分大小写,因此它匹配 关键字的大写和小写变体。
- \b 匹配一个词边界,确保我们只匹配整个 的话。
- util(?:it(?:y|ies))?匹配“util”的变体,包括“utility”和“utilities”(如果存在)。
- |是交替运算符,允许我们匹配任何 指定的关键字。
- 警察|水与“警察”或“水”相匹配。[0-9]+(?:st|[rn]d|th)?匹配可能带有“st”、“nd”或“th”后缀的数字(例如,“344th”)。
- (?:,?\s)?匹配可选逗号,后跟可选的 whitespa
评论
(?i)\\s*\\b(util(?:ity)?|MUNICIPAL|Police|Water|[0-9]+(?:st|[rn]d|th)?)(?:,?\\s)?