Saltar al contenido

¿Cómo restar dos columnas separadas por comas en R?

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)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *