Columna de separación usando separado (tidyr) a través de dplyr en un primer dígito encontrado

Estoy tratando de separar una columna bastante desordenada en dos columnas que contienenperíodo ydescripción. Mis datos se parecen al extracto a continuación:

set.seed(1)
dta <- data.frame(indicator=c("someindicator2001", "someindicator2011",
                              "some text 20022008", "another indicator 2003"),
                  values = runif(n = 4))
Resultados deseados

Los resultados deseados deberían verse así:

          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
CaracteristicasLas descripciones de los indicadores están en una columna.Valores numéricos (contando desde el primer dígitocon el primer dígito está en la segunda columna)Código
require(dplyr); require(tidyr); require(magrittr)
dta %<>%
  separate(col = indicator, into = c("indicator", "period"),
           sep = "^[^\\d]*(2+)", remove = TRUE)

Naturalmente, esto no funciona:

> head(dta, 2)
  indicator period    values
1              001 0.2655087
2              011 0.3721239
Otros intentosTambién probé el método de separación predeterminadosep = "[^[:alnum:]]" pero divide la columna en demasiadas columnas, ya que parece coincidir con todos los dígitos disponibles.lossep = "2*" tampoco funciona ya que hay demasiados 2s a veces(ejemplo:20032006).

Lo que intento hacer se reduce a:

Identificando el primer dígito en la cadenaSepararse de esa carta.De hecho, estaría encantado de preservar ese carácter en particular también.

Respuestas a la pregunta(1)

Su respuesta a la pregunta