Удалить повторяющиеся значения, сравнивающие два столбца во фрейме данных, которые содержат два столбца

#r #dplyr

#r #dplyr

Вопрос:

У меня есть такой фрейм данных

 Event   <-c("AIS" ,"AIS", "AIS", "AIS", " AIS") 
Next_Event <-c("SERVER_SIGNAL_FAILURE-TMi", "UNEQUIPPED-TMi", "SERVER_SIGNAL_FAILURE-TMe","AIS","                              
          UNEQUIPPED-TMe ") 

df <-data.frame(Event,Next_Event)
 

Я попытался удалить дублированные значения, используя следующий код

 df %>% 
  arrange(Event) %>%
  group_by(Event) %>%
  distinct(Event,Next_Event, .keep_all = F)
 

Желаемый вывод

 Event   <-c("AIS" ,"AIS", "AIS", " AIS") 
Next_Event <-c("SERVER_SIGNAL_FAILURE-TMi", "UNEQUIPPED-TMi", "SERVER_SIGNAL_FAILURE-TMe","                              
          UNEQUIPPED-TMe ") 
df <-data.frame(Event,Next_Event)
 

Комментарии:

1. Вероятно, это неправильный вывод, второй вектор Next_Event по-прежнему содержит 5 элементов.

2. Вам нужно df %>% filter(Event != Next_Event) ?

3. Не уверен, на что вы смотрите, подойдет df %>% group_by(событие) %>% distinct() . Кроме того, пожалуйста, проверьте общие данные, в них есть пробелы, а желаемый результат имеет несоответствие строк.

4. Как вы создали *** Желаемый df *** Событие имеет 4, а следующее событие имеет 5 элементов. Это разные числа для создания фрейма данных.

5. Извините за любое удобство. Я обновил код

Ответ №1:

Вы можете сохранить только строки, где Event и Next_Event отличаются.

Это можно записать в базовом R :

 subset(df, Event != Next_Event)

#  Event                                                Next_Event
#1   AIS                                 SERVER_SIGNAL_FAILURE-TMi
#2   AIS                                            UNEQUIPPED-TMi
#3   AIS                                 SERVER_SIGNAL_FAILURE-TMe
#5   AIS                               n          UNEQUIPPED-TMe 
 

dplyr :

 library(dplyr)
df %>% filter(Event != Next_Event)
 

Или data.table :

 library(data.table)
setDT(df)[Event != Next_Event]