Мы можем использовать cSplit
library(splitstackshape)
library(dplyr)
cSplit(df1, "Var B", ",", "long") %>%
cSplit(., "Var A", ",", "long")
Или с separate_rows
library(tidyr)
separate_rows(df1, "Var B", convert = TRUE) %>%
separate_rows("Var A") %>%
arrange(`Var A`)
# Var A Var B
#1 A 1
#2 A 2
#3 B 1
#4 B 2
#5 C 2
Данные
df1 <- structure(list(`Var A` = c("A,B", "C"), `Var B` = c("1,2", "2"
)), class = "data.frame", row.names = c(NA, -2L))