Разделение столбца с использованием раздельного (tidyr) через dplyr первого обнаруженного числа

Я пытаюсь разделить довольно грязный столбец на два столбца, содержащихпериод а такжеописание, Мои данные напоминают выдержку ниже:

set.seed(1)
dta <- data.frame(indicator=c("someindicator2001", "someindicator2011",
                              "some text 20022008", "another indicator 2003"),
                  values = runif(n = 4))
Желаемые результаты

Желаемые результаты должны выглядеть так:

          indicator   period    values
1     someindicator     2001 0.2655087
2     someindicator     2011 0.3721239
3         some text 20022008 0.5728534
4 another indicator     2003 0.9082078
ХарактеристикиОписание индикаторов в одном столбцеЧисловые значения (считая от первой цифрыс первая цифра во втором столбце)Код
require(dplyr); require(tidyr); require(magrittr)
dta %<>%
  separate(col = indicator, into = c("indicator", "period"),
           sep = "^[^\\d]*(2+)", remove = TRUE)

Естественно, это не работает:

> head(dta, 2)
  indicator period    values
1              001 0.2655087
2              011 0.3721239
Другие попыткиЯ также попробовал метод разделения по умолчаниюsep = "[^[:alnum:]]" но он разбивает столбец на слишком много столбцов, поскольку он соответствует всем доступным цифрам.sep = "2*" также не работает, так как иногда слишком много 2s(пример:20032006).

То, что я пытаюсь сделать, сводится к:

Идентификация первой цифры в строкеОтделение по этому уставу.На самом деле, я был бы рад сохранить и этот характер.

Ответы на вопрос(1)

Ваш ответ на вопрос