在R中资本化(有例外)

在R中资本化(有例外),r,R,除了添加边界外,如何利用R上的数据 例如: 以“纽约州纽约市”的形式给出城市和州的列表 它需要改为:“纽约,纽约” str_to_title函数将其更改为“纽约,纽约” 模式: 华盛顿特区 马萨诸塞州阿默斯特 新罕布什尔州汉诺威 北卡罗来纳州戴维森 布伦瑞克,我 格林维尔,SC 波特兰,或 路易斯维尔,肯塔基州 它们的格式都应该是:Amherst、MA或Brunswick、ME我们可以使用一个负正则表达式查找来匹配不在、和空格后面的大写字母,作为一个组捕获((…)),在替换中指定捕获组的反向引用

除了添加边界外,如何利用R上的数据

例如:

以“纽约州纽约市”的形式给出城市和州的列表 它需要改为:“纽约,纽约”

str_to_title函数将其更改为“纽约,纽约”

模式: 华盛顿特区 马萨诸塞州阿默斯特 新罕布什尔州汉诺威 北卡罗来纳州戴维森 布伦瑞克,我 格林维尔,SC 波特兰,或 路易斯维尔,肯塔基州


它们的格式都应该是:Amherst、MA或Brunswick、ME

我们可以使用一个负正则表达式查找来匹配不在
和空格
后面的大写字母,作为一个组捕获(
(…)
),在替换中指定捕获组的反向引用(
\\1
\\2
)同时将第二组转换为较低(
\\L


gsub(“(?我把它们添加到了原始帖子中。你能检查一下我下面的解决方案吗。谢谢。谢谢。你能解释一下gsub命令以及相关的参数吗?我不完全确定为什么这样做,但它确实起作用了。
gsub("(?<!, )([A-Z])([A-Z]+)\\b", "\\1\\L\\2", str1, perl = TRUE)
#[1] "New York, NY"   "Washington, DC" "Amherst, MA"    "Hanover, NH" 
#[5]  "Davidson, NC"   "Brunswick, ME" 
#[7] "Greenville, SC" "Portland, OR"   "Louisville, KY"
str1 <- c("NEW YORK, NY", "WASHINGTON, DC", "AMHERST, MA", "HANOVER, NH", 
  "DAVIDSON, NC", "BRUNSWICK, ME", "GREENVILLE, SC", "PORTLAND, OR", 
 "LOUISVILLE, KY")