如何在 R 中根据第一个空格拆分列

Cra*_*oot 1 regex string r regex-lookarounds

我有这段代码可以在第二个空间上拆分列,但我不知道如何修改它以仅在第一个空间上拆分。我对正则表达式不太熟悉。

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
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 6

您可以使用

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+")
Run Code Online (Sandbox Code Playgroud)

输出:

> df_new
     city      state
1     San    Jose CA
2 Fremont         CA
3   Santa   Clara CA
Run Code Online (Sandbox Code Playgroud)

^\S*\K\s+则表达式匹配

  • ^- 字符串的开头
  • \S*- 零个或多个非空白字符
  • \K- 匹配重置运算符,从整个匹配内存缓冲区中丢弃迄今为止匹配的文本
  • \s+ - 一个或多个空白字符。

注意:如果你的字符串可以有前导空格,并且你想忽略这个前导空格,你可以\\s*在后面添加^并使用

sep = "^\\s*\\S+\\K\\s+"
Run Code Online (Sandbox Code Playgroud)

在这里,\S+将要求在分割字符串的空白之前至少存在一个(或多个)非空白字符。