Обновить грубый ответ df2 - это df
library(tidyverse)
df2$text_id<-gsub("[-]", "\\1 \\2", df2$test_id)
df2$test_id
df2<-df2 %>%
mutate(text_id=str_remove_all(df2$text_id,"\\s"),
text_id=substr(df2$text_id,1,5))
df2$tesxt_id<-str_replace_all(df2$text_id," ","-")
df2 %>%
separate(test_id,c("pre","post"),sep="\\d(?=\\d{8,})",convert = T) %>%
select(tesxt_id,post)
Результат:
tesxt_id post
<chr> <int>
1 123-4 56789123
2 785-5 25135627
3 65456 NA
4 98889 NA
5 987-6 56546464
6 666-6 54564654
Попробуйте: переименовать столбцы по мере необходимости.Это соответствует любой цифре, по крайней мере, 8-значному числу перед.Мы используем прогноз (?=
), который проверяет, есть ли перед цифрой \\d
номер, по крайней мере, с 8 цифрами \\d{8,}
.
df %>%
separate(test_id,c("pre","post"),sep="\\d(?=\\d{8,})",convert = T)