R: удаление дубликатов в строке кадра данных - PullRequest
0 голосов
/ 09 января 2019

Я работаю с некоторыми данными в R, где я сгенерировал столбцы данных категории на основе комментариев внутри фрейма данных.

Комментарии распределены по нескольким столбцам для каждой строки, поэтому каждый комментарий необходимо классифицировать. Результат для столбцов категории выглядит примерно так:

Category1  Category2             Category3             Category4
No change  Presentation Changed  Presentation Changed  No change
No change  No change             Scroll Changed

В этих строках мне нужно только сохранить уникальные значения (удалить дубликаты). Я не хочу удалять целые строки или целые столбцы, просто преобразовать дубликаты в строке в пробелы. Таким образом, новый пример будет выглядеть так:

Category1  Category2             Category3             Category4
No change  Presentation Changed  
No change                        Scroll Changed

Дайте мне знать, если есть какие-либо другие подробности о коде или таблице, необходимые для решения этой проблемы. Спасибо!

1 Ответ

0 голосов
/ 09 января 2019

Вот решение с использованием пакета tidyverse:

library(tidyverse)

data <-
  tibble(
    Category1 = c('No change', 'No change'),
    Category2 = c('Presentation Changed', 'No change'),
    Category3 = c('Presentation Changed', 'Scroll Changed'),
    Category4 = c('No change', '')
  ) 

data %>%
  mutate(id = row_number()) %>%
  gather(Category, Value, -id) %>%
  group_by(id, Value) %>%
  mutate(cnt = n()) %>%
  group_by(id, Value) %>%
  mutate(dup = row_number()) %>%
  ungroup() %>%
  mutate(Value = if_else(cnt > 1 & dup > 1, '', Value)) %>%
  select(id, Category, Value) %>%
  spread(Category, Value)
...