I have a data frame like so:
df <- structure(list(A = c(\"3 of 5\", \"1 of 2\", \"1 of 3\", \"1 of 3\",
\"3 of 4\", \"2 of 7\"), B = c(\"2 of 2\", \"2 of
We can use cSplit
library(splitstackshape)
df1 <- cSplit(df, names(df), sep = "of", stripWhite = FALSE)
df1
# A_1 A_2 B_1 B_2 C_1 C_2 D_1 D_2 E_1 E_2
#1: 3 5 2 2 10 21 0 0 8 16
#2: 1 2 2 4 3 14 0 0 3 15
#3: 1 3 0 1 11 34 0 0 10 32
#4: 1 3 0 0 10 35 0 0 6 28
#5: 3 4 0 0 16 53 0 0 13 49
#6: 2 7 0 0 17 62 0 0 9 48
We can rename it by
names(df1) <- c(outer(names(df), c("attempted", "landed"), paste, sep = "_"))
And we can always do things in base R
do.call(cbind.data.frame,
lapply(df, function(x) do.call(rbind, strsplit(x, " of "))))
# A.1 A.2 B.1 B.2 C.1 C.2 D.1 D.2 E.1 E.2
#1 3 5 2 2 10 21 0 0 8 16
#2 1 2 2 4 3 14 0 0 3 15
#3 1 3 0 1 11 34 0 0 10 32
#4 1 3 0 0 10 35 0 0 6 28
#5 3 4 0 0 16 53 0 0 13 49
#6 2 7 0 0 17 62 0 0 9 48
We can rename the columns in similar fashion as shown above.