0

How can I convert this following dataframe to the following expected output?

DataFrame:

col_A
A => B
B => C
D => F

Output:

col_A  col_B  col_C
A      =>     B
B      =>     C
D      =>     F
Eisen
  • 1,697
  • 9
  • 27

2 Answers2

2

We can use separate with one or more space (\\s+) as the sep

library(tidyr)
df1 %>%
   separate(col_A, into = c("col_A", "col_B", "col_C"), sep = "\\s+")

-output

   col_A col_B col_C
1     A    =>     B
2     B    =>     C
3     D    =>     F

data

df1 <- structure(list(col_A = c("A => B", "B => C", "D => F")), 
class = "data.frame", row.names = c(NA, 
-3L))
Darren Tsai
  • 32,117
  • 5
  • 21
  • 51
akrun
  • 874,273
  • 37
  • 540
  • 662
1

Using basic syntax, you could use:

col_A <- c('A => B','B => C','D => F')
df <- data.frame(strsplit(col_A, split = ' '))
names(df) <- paste0('col_',LETTERS[1:3])
df
  col_A col_B col_C
1     A     B     D
2    =>    =>    =>
3     B     C     F
gaut
  • 5,771
  • 1
  • 14
  • 45