如何使用purrr str_split文本到几列

时间:2018-02-14 14:00:22

标签: r dictionary dplyr purrr strsplit

我有数据框,我想将列拆分为另一个:

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="-"))

但没有任何积极的结果

THX!

1 个答案:

答案 0 :(得分:4)

我们可以使用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指定为“x”列

cbind(df['x'], read.table(text=as.character(df$y), sep="-", col.names = paste0("y", 1:3)))