Вот моя попытка. Я использовал регулярное выражение для извлечения алфавитов и чисел, оставшихся в скобках. stri_extract_all_regex()
возвращает список. Поэтому я использовал unnest_wider()
для создания новых столбцов. Последний шаг заключался в пересмотре трех названий столбцов. Например, после использования unnest_wider()
мы получаем ...1
в качестве имени столбца. Все имена столбцов, которые содержат ...
, были исправлены; Я заменил ...
на foo
.
library(tidyverse)
library(stringi)
mutate(mydf,
foo = stri_extract_all_regex(str = abc, pattern = "(?<=\\()[[:alnum:]]+(?=\\))")) %>%
unnest_wider(foo) %>%
rename_at(vars(contains("...")),
.funs = list(~sub(x = ., pattern = "\\.+", replacement = "foo")))
index abc foo1 foo2 foo3
<int> <chr> <chr> <chr> <chr>
1 1 qwer(urt123) qweqwe urt123 NA NA
2 2 rte(ret390) qweqwe(tertr213) ityorty(ret435) ret390 tertr213 ret435
3 3 NA NA NA NA
4 4 ogi(wqe685) qwe(ieow123) wqe685 ieow123 NA
5 5 cvb(bnm567) bnm567 NA NA
ДАННЫЕ
mydf <- structure(list(index = 1:5, abc = c("qwer(urt123) qweqwe", "rte(ret390)
qweqwe(tertr213) ityorty(ret435)",
NA, "ogi(wqe685) qwe(ieow123)", "cvb(bnm567)")), row.names = c(NA,
-5L), class = c("tbl_df", "tbl", "data.frame"))