Мы можем использовать strsplit()
вместе с регулярным выражением , которое использует lookbehind утверждение:
x <- c("AU2847", "AU1824")
strsplit(x, "(?<=[A-Z]{2})", perl = TRUE)
[[1]]
[1] "AU" "2847"
[[2]]
[1] "AU" "1824"
Регулярное выражение lookbehind указывает strsplit()
разбивать каждую строку после двух заглавных букв. Нет необходимости искусственно вводить символ для разделения, как в ответе arg0naut91 .
Теперь в ОП упоминается, что символьный вектор, подлежащий разделению, является столбцом большие данные. Для этого требуется дополнительный код для добавления вывода списка strsplit()
в качестве новых столбцов к data.frame:
Предположим, у нас есть этот data.frame
DF <- data.frame(x, stringsAsFactors = FALSE)
Теперь новый К столбцам можно добавить:
DF[, c("col1", "col2")] <- do.call(rbind, strsplit(DF$x, "(?<=[A-Z]{2})", perl = TRUE))
DF
x col1 col2
1 AU2847 AU 2847
2 AU1824 AU 1824