我有数据框,我想将列拆分为另一个:
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!
答案 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)))