Olá, vc nao colocou muito bem como quer fazer essa divisão, mas no caso se os nomes forem separados por uma "/" use esse script, mas se for outro separador é só fazer uma adaptação.
Saudações
Alisson Lucrécio da Costa
library(stringr)
df
names3 <- str_split(df$names3, pattern="/")
names3 <- do.call(rbind, names3)
names3 <- data.frame(names3)
names(names3)[which(names(names3) == "X1")] <- "names1"
names(names3)[which(names(names3) == "X2")] <- "names2"
names(names3)[which(names(names3) == "X3")] <- "names3"
names3$id <- with(names, paste(names1, names2, names3, sep="."))
df2 <- cbind(names3, df[,-1])