如何在 R 中的括号前后拆分单词?

How can I split words before and after parenthesis in R?

我正在尝试拆分如下所示的文本变量:

text = "name name name (1235-23-532)"

像这样:

name = "name name name"
num = "1235-23-532"

我正在尝试这段代码:

df_split <- df %>%
  separate(owners, 
       into = c("name", "num"), 
       sep = "(?<=[A-Za-z])(?=\()"
  )

然而,它导致对应的数字为 NA。我很困惑它是如何检测不到括号的(我尝试了 ( 和 \( 两种方法都不起作用)。有好的解决方案吗?

另外:有些行有两个括号对,例如:“name name name (name) (number)” - 有什么好的方法可以只提取数字吗?

非常感谢。

我没有办法阻止“NA”,但是当我遇到这个问题时,我确实有一个解决方法。我对“NA”使用 mutate fct_recode 函数来等于正确的变量名称 (reference).

例如

%>% mutate(Column_Name = fct_recode(Column_Name, "new_name" = "NA"))

这对我有用,它并不完美,但它解决了问题。

这是获得所需输出的一种方法:

library(tidyverse)

as_tibble(text) %>% 
  mutate(name = str_trim(gsub("[^a-zA-Z]", " ", value)),
         num = str_extract(value, '\d+\-\d+\-\d+'), .keep="unused")
# A tibble: 1 x 2
  name           num        
  <chr>          <chr>      
1 name name name 1235-23-532

或:

library(tidyverse)

as_tibble(text) %>% 
  separate(value, c("name", "num"), sep = ' \(') %>% 
  mutate(num = str_remove(num, '\)'))