Solución:
Otra opción que aprovecha la función vecsets::vsetdiff
que no elimina los duplicados:
library(dplyr)
library(tidyr)
library(purrr)
library(vecsets)
dt %>%
mutate(x = strsplit(ColumnA,","),
y = strsplit(ColumnB,",")) %>%
mutate(z = map2(x,y,vecsets::vsetdiff))
ColumnA ColumnB x y z
1 A,B,C,A,A,A A,C,A A, B, C, A, A, A A, C, A B, A, A
2 A,B,C C A, B, C C A, B
Tenga en cuenta que terminará con columnas de lista aquí (que creé a propósito para que esto funcione), pero de todos modos podría ser más fácil trabajar con los datos de esa manera.
sapply(1:nrow(dt), function(i){
a = dt$ColumnA[i]
b = unlist(strsplit(dt$ColumnB[i], ","))
for (x in b){
a = sub(paste0(x, ",?"), "", a)
}
sub(",$", "", a)
})
#[1] "B,A,A" "A,B"
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)