R 中的正则表达式和 SharePoint 名称
Regex and SharePoint names in R
我正在尝试从 SharePoint 生成的列表中提取姓名。
列表中的每一项都至少包含一个名称和一个长度不一的数字 ID。
列表的格式如下:
all_projects %>%
select(contact_names)
A tibble: 116 x 1
contact_names
<chr>
1 last_name, first_name;#6903;#last_name, first_name;#36606
2 last_name, first_name;#8585
3 ...
4 last_name, first_name;#14801
使用 stringr
我已经设法通过以下方式得到数字:
str_replace_all(string, pattern = ";#?\d*", ";")
但结果是:
\"last_name, first_name;;last_name, first_name;\",
如果不是双倍 ;;
,那还可以。插入一个 (""
) 空白字符串 str_replace_all(string, pattern = ";#?\d*", "")
returns:
\"last_name, first_namelast_name, first_name;\",
理想情况下,我想将名字和姓氏分成两列。
非常感谢任何帮助。
我们可以使用 separate/separate_rows
library(tidyverse)
separate_rows(df1, contact_names, sep = ";") %>%
filter(!grepl("#\d+", contact_names)) %>%
mutate(contact_names = str_replace_all(contact_names, "#", "")) %>%
separate(contact_names, into = c("last", "first"), sep=",", remove = FALSE)
# A tibble: 4 x 3
# contact_names last first
#* <chr> <chr> <chr>
#1 last_name, first_name last_name first_name
#2 last_name, first_name last_name first_name
#3 last_name, first_name last_name first_name
#4 last_name, first_name last_name first_name
数据
df1 <- tribble(
~contact_names,
"last_name, first_name;#6903;#last_name, first_name;#36606",
"last_name, first_name;#8585",
"last_name, first_name;#14801")
我正在尝试从 SharePoint 生成的列表中提取姓名。
列表中的每一项都至少包含一个名称和一个长度不一的数字 ID。
列表的格式如下:
all_projects %>%
select(contact_names)
A tibble: 116 x 1
contact_names
<chr>
1 last_name, first_name;#6903;#last_name, first_name;#36606
2 last_name, first_name;#8585
3 ...
4 last_name, first_name;#14801
使用 stringr
我已经设法通过以下方式得到数字:
str_replace_all(string, pattern = ";#?\d*", ";")
但结果是:
\"last_name, first_name;;last_name, first_name;\",
如果不是双倍 ;;
,那还可以。插入一个 (""
) 空白字符串 str_replace_all(string, pattern = ";#?\d*", "")
returns:
\"last_name, first_namelast_name, first_name;\",
理想情况下,我想将名字和姓氏分成两列。
非常感谢任何帮助。
我们可以使用 separate/separate_rows
library(tidyverse)
separate_rows(df1, contact_names, sep = ";") %>%
filter(!grepl("#\d+", contact_names)) %>%
mutate(contact_names = str_replace_all(contact_names, "#", "")) %>%
separate(contact_names, into = c("last", "first"), sep=",", remove = FALSE)
# A tibble: 4 x 3
# contact_names last first
#* <chr> <chr> <chr>
#1 last_name, first_name last_name first_name
#2 last_name, first_name last_name first_name
#3 last_name, first_name last_name first_name
#4 last_name, first_name last_name first_name
数据
df1 <- tribble(
~contact_names,
"last_name, first_name;#6903;#last_name, first_name;#36606",
"last_name, first_name;#8585",
"last_name, first_name;#14801")