Как str_split текст на несколько столбцов, используя purrr

У меня есть фрейм данных, и я хочу разделить столбец на 3 другой:

df<-data.frame(x=1:5,y=paste0("num-",1:5,"-ber"))
df
  x         y
1 1 num-1-ber
2 2 num-2-ber
3 3 num-3-ber
4 4 num-4-ber
5 5 num-5-ber

Результат должен быть примерно таким:

 x  y1 y2  y3
1 1 num  1 ber
2 2 num  2 ber
3 3 num  3 ber
4 4 num  4 ber
5 5 num  5 ber

Я пытаюсь вариации что-то вроде этого:

df%>%
  purrr::map_chr(stringr::str_split(y,pattern="-"))

Но без каких-либо положительных результатов

Спасибо!

1 ответ

Решение

Мы можем использовать separate от tidyr который автоматически выбирает разделитель, если sep не указано В этом случае это -

library(dplyr)
library(tidyr)
df %>% 
    separate(y, into= paste0('y', 1:3))
#  x  y1 y2  y3
#1 1 num  1 ber
#2 2 num  2 ber
#3 3 num  3 ber
#4 4 num  4 ber
#5 5 num  5 ber

Или base R вариант будет читать с read.table указав sep как - а также cbind с колонкой "х"

cbind(df['x'], read.table(text=as.character(df$y), sep="-", col.names = paste0("y", 1:3)))
Другие вопросы по тегам