Вы можете использовать extract
из tidyr
пакета, в котором можно указать регулярные выражения, чтобы разделить колонки:
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
Используйте (.*)\\s(\\S+)
, чтобы захватить две группы и раскол в пространстве, за которым следует группа, которая не содержит никакого пространства \\S+
.
Если вы хотите использовать stringr
пакет, вы можете использовать str_match
функции с аналогичной функциональностью:
stringr::str_match(df$Time, "(.*)\\s(\\S+)")[, 2:3]
# [,1] [,2]
# [1,] "Week End" "07-01-10"
# [2,] "Week End" "07-02-10"
strsplit
также работает, если указать место быть один перед цифрой, здесь ?=
стендов для прогностического и \\d
это аббревиатура для цифр и эквивалентно [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"
Ваш вставленный df выглядит так, как будто он имеет только одно пространство. Какой код вы пробовали? – Nate
Есть два пробела; один после ** Неделя ** и другой после ** Конец **. Я не пробовал код на данный момент –