如何在 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, '\)'))
我正在尝试拆分如下所示的文本变量:
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, '\)'))