我有這段代碼可以在第二個空間上拆分列,但我不知道如何修改它以僅在第一個空間上拆分。我對正則運算式不太熟悉。
library(tidyr)
df <- data.frame(Location = c("San Jose CA", "Fremont CA", "Santa Clara CA"))
separate(df, Location, into = c("city", "state"), sep = " (?=[^ ] $)")
# city state
# 1 San Jose CA
# 2 Fremont CA
# 3 Santa Clara CA
uj5u.com熱心網友回復:
您可以使用
library(tidyr)
df <- data.frame(Location = c("San Jose CA", "Fremont CA", "Santa Clara CA"))
df_new <- separate(df, Location, into = c("city", "state"), sep = "^\\S*\\K\\s ")
輸出:
> df_new
city state
1 San Jose CA
2 Fremont CA
3 Santa Clara CA
在^\S*\K\s 正則運算式匹配
^- 字串的開始\S*- 零個或多個非空白字符\K- 匹配重置運算子,從整體匹配記憶體緩沖區中丟棄到目前為止匹配的文本\s- 一個或多個空白字符。
注意:如果你的字串可以有前導空格,而你想忽略這個前導空格,你可以在\\s*后面添加^并使用
sep = "^\\s*\\S \\K\\s "
在這里,\S 將需要至少一個(或多個)非空白字符存在于字串被分割的空白之前。
uj5u.com熱心網友回復:
如果您想堅持使用separate,請嘗試:
separate(df, Location, into=c("city", "state"), sep=" (?=[A-Z]{2}$)")
我們也可以嘗試sub在此處使用基本 R 選項:
df$city <- sub("\\s [A-Z]{2}$", "", df$Location)
df$state <- sub("^.*\\s ", "", df$Location)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/388742.html
標籤:r 正则表达式 细绳 regex-lookarounds
上一篇:在字串中查找子字串
下一篇:如何使用R更改字串中文本之前的值
