提问人:Antonio 提问时间:9/23/2023 最后编辑:ThomasIsCodingAntonio 更新时间:10/5/2023 访问量:86
如何在 R 中将逗号插入到预先存在的字符串中?
How can I insert a comma into pre-existing strings in R?
问:
我的数据类似于以下示例:
数据 |
---|
假装县 JP |
德克萨斯州法克县 JP 1.1 |
德克萨斯州梅德普城 |
非雷亚尔县, JP 2.5 |
如何将“,TX”添加到没有它的县,例如第一个单元格?
我想要一个数据集,然后看起来像:
数据 |
---|
德克萨斯州假装县 JP |
德克萨斯州法克县 JP 1.1 |
德克萨斯州梅德普城 |
德克萨斯州非雷亚尔县 JP 2.5 |
答:
0赞
joshbrows
9/23/2023
#1
我不确定确切的要求,但您可以尝试使用正则表达式。
# build example data
df <-
data.frame(
stringsAsFactors = FALSE,
DATA = c("PRETEND COUNTY JP",
"FAKE COUNTY,TX JP 1.1","Madeup City,TX",
"Not Real County, JP 2.5")
)
# build regular expression
pattern <- stringr::regex('county', ignore_case = TRUE)
# use regular expression to make new desired column
df2 <-
df |>
dplyr::mutate(
DATA2 =
dplyr::case_when(
stringr::str_detect(DATA, "TX") ~ DATA,
TRUE ~ stringr::str_replace(DATA, pattern ,"County, TX")
)
)
df2
#> DATA DATA2
#> 1 PRETEND COUNTY JP PRETEND County, TX JP
#> 2 FAKE COUNTY,TX JP 1.1 FAKE COUNTY,TX JP 1.1
#> 3 Madeup City,TX Madeup City,TX
#> 4 Not Real County, JP 2.5 Not Real County, TX, JP 2.5
创建于 2023-09-22 使用 reprex v2.0.2
1赞
Chris Ruehlemann
9/23/2023
#2
library(tidyverse)
df %>%
mutate(address = str_replace(address, "(?i)(?<=(COUNTY|CITY)),?\\s(?=JP)", ", TX "))
address
1 PRETEND COUNTY, TX JP
2 FAKE COUNTY,TX JP 1.1
3 Madeup City,TX
4 Not Real County, TX JP 2.5
工作原理:
(?i)
:不区分大小写的标志(?<=(COUNTY|CITY))
:正面向后看:仅当您看到匹配左侧的“县”或“市”时才匹配,?\\s
:匹配可选的逗号和空格(?=JP)
:但只有 iff 在匹配的右侧有“JP”
评论