Sie können extract
von tidyr
Paket verwenden, wo Sie reguläre Ausdrücke angeben können, um die Spalte zu spalten:
library(tidyr)
extract(df, Time, into = c("Column", "Time"), "(.*)\\s(\\S+)")
# Column Time
# 1 Week End 07-01-10
# 2 Week End 07-02-10
Verwenden (.*)\\s(\\S+)
zwei Gruppen und Split auf den Raum zu erfassen, die von einer Gruppe anschließt, die keine Leerzeichen enthält \\S+
.
Wenn Sie stringr
Paket verwenden möchten, können Sie str_match
Funktion mit ähnlicher Funktionalität verwenden:
stringr::str_match(df$Time, "(.*)\\s(\\S+)")[, 2:3]
# [,1] [,2]
# [1,] "Week End" "07-01-10"
# [2,] "Week End" "07-02-10"
strsplit
funktioniert auch, wenn Sie den Raum angeben, die eine vor der Stelle zu sein, hier ?=
steht für Vorgriffs \\d
und ist eine Abkürzung für Ziffern und entspricht [0-9]
:
do.call(rbind, strsplit(df$Time, "\\s(?=\\d)", perl = T))
# [,1] [,2]
# [1,] "Week End" "07-01-10"
# [2,] "Week End" "07-02-10"
Ihr eingefügtes df sieht aus wie es nur ein Leerzeichen hat. Welchen Code hast du ausprobiert? – Nate
Es gibt zwei Leerzeichen; eine nach ** Woche ** und die andere nach ** Ende **. Ich habe keinen Code ab sofort –