Chcę pozbyć się duplikatów w ciągach oddzielonych przecinkami.

Działa dla jednej kolumny za pomocą:

df$column  <- sapply(strsplit(df$column, ",", fixed = TRUE), function(x) 
                                           paste(unique(x), collapse = ","))

Kiedy próbuję użyć go w wielu kolumnach, zawsze otrzymuję błąd „argument nie jest znakiem”.

r
2
Nico.444 12 grudzień 2018, 17:40

1 odpowiedź

Najlepsza odpowiedź

Musimy owinąć z as.character, jeśli kolumna jest factor

sapply(strsplit(as.character(df$column), ",", fixed = TRUE),
      function(x) paste(unique(x), collapse = ","))

Aby zastosować pętlę do wielu kolumn w interesujących kolumnach, zastosuj tę samą funkcję i zaktualizuj dane wyjściowe do interesujących kolumn

colsOfInterest <- c('column1', 'column2')
df[colsOfInterest] <- lapply(df[colsOfInterest], function(x) 
  sapply(strsplit(as.character(x), ",", fixed = TRUE),
       function(y) paste(unique(y), collapse=",")))
1
akrun 12 grudzień 2018, 17:51