мы можем использовать это
df[,1:2] <- apply(df,1, function(X) paste(unlist(strsplit(X[1],","))[unlist(strsplit(X[1],",")) %in% unlist(strsplit(X[2],","))],collapse=",") )
> df
colA colB
1 b b
2 f,g f,g
3 j j
Данные:
df <- structure(list(colA = structure(1:3, .Label = c("a,b,c,ñ", "f,g,h",
"i,j,k"), class = "factor"), colB = structure(1:3, .Label = c("d,b,e",
"f,g,m,p", "f,o,j"), class = "factor")), class = "data.frame", row.names = c(NA,
-3L))