2016-07-05 4 views
-2

Я хотел бы знать, как я могу удалить записи строк, которые я выбираю для вызова как дубликаты на основе номера идентификатора в первом столбце фрейма данных. Большинство функций, таких как duplicated() и unique(), обычно проверяют каждое значение в каждой строке, чтобы удалить его. С другой стороны, мне интересно выбрать только первое появление среди наблюдений с похожими идентификаторами. Вот примерУдалить дубликаты строк в R data.frames на основе одного значения

ID Test Date Taken 
1 POS 1/1/15 
1 POS 2/8/14 
2 NEG 7/9/13 
2 NEG 4/10/12 
2 NEG 2/5/08 

и ожидаемый результат

ID Test Date Taken 
1 POS 1/1/15 
2 NEG 7/9/13 
+3

'ДФ [! Дублируется (ДФ $ ID),]' ' – Sotos

+1

библиотека (dplyr)', а затем 'ДФ%>% различны (ДФ $ ID)' –

ответ

1

Я думаю, что вы на самом деле хотите использовать a filter() для этого в сочетании с arrange()

Например:

df %>% 
arrange(desc(`Date Taken`)) %>% 
group_by(ID) %>% 
filter(row_number(`Date Taken`) == 1) 

предоставит вам самое последнее наблюдение за каждым идентификатором.

Вы также могли бы использовать summarise():

df %>% 
arrange(desc(`Date Taken`)) %>% 
group_by(ID) %>% 
summarise(ID = first(ID)) 

Если вы не заботитесь о том, что делает его Date Taken в результате.

0

Мы можем использовать unique

library(data.table) 
unique(setDT(df1), by = "ID") 
0

Вы можете использовать дублированный функцию. Если ФР ваш dataframe:

df[duplicated(df$ID), ] 

будет возвращает вам (дубликат на основе ID здесь)

ID Test Date Taken 
1 POS 1/1/15 
2 NEG 7/9/13 
+0

я заметил правильный подход этого. – Sotos

+0

Рад, что это помогает! Удачи и не забудьте принять ответ для дальнейших разработчиков, чтобы им помогли;) –

0

Вы можете использовать

df[!duplicated(df$ID),] 
Смежные вопросы