Separating column using separate (tidyr) via dplyr auf eine erste gefundene Ziffer

Ich versuche, eine ziemlich unordentliche Spalte in zwei Spalten zu unterteilen, die @ enthalteZeitrau undBeschreibun. Meine Daten ähneln dem folgenden Auszug:

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

Gewünschte Ergebnisse sollten so aussehen:

          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
EigenschafteIndikatorbeschreibungen stehen in einer SpalteNumerische Werte (ab der ersten Ziffer zählenmi die erste Ziffer steht in der zweiten Spalte)Cod
require(dplyr); require(tidyr); require(magrittr)
dta %<>%
  separate(col = indicator, into = c("indicator", "period"),
           sep = "^[^\\d]*(2+)", remove = TRUE)

Natürlich funktioniert das nicht:

> head(dta, 2)
  indicator period    values
1              001 0.2655087
2              011 0.3721239
Weitere VersucheIch habe auch die Standardtrennmethode ausprobiertsep = "[^[:alnum:]]" Die Spalte wird jedoch in zu viele Spalten unterteilt, da anscheinend alle verfügbaren Ziffern übereinstimmen.Dassep = "2*" funktioniert auch nicht, da es manchmal zu viele 2en gibt (Beispiel:2 0032 006).

Was ich versuche, läuft auf Folgendes hinaus:

Identifizierung der ersten Ziffer in der ZeichenfolgeSeparating auf dieser Charter.atsächlich würde ich mich freuen, diesen besonderen Charakter auch zu bewahre

Antworten auf die Frage(2)

Ihre Antwort auf die Frage