2015-12-16 3 views
0

У меня есть ФР так:Удалить строки с повторяющимися записями в R

Num <- c(1,1,1,2,2,3,4,5) 
ID <- c("A","B","C","A","B","C","D","E") 
dff <- data.frame(Num,ID) 

Я пытаюсь удалить все строки, которые имеют повторяющиеся записи. Я делаю так

dff1 <- dff[!duplicated(dff[,1]),] 

я получить выход

Num ID 
1 1 A 
4 2 A 
6 3 C 
7 4 D 
8 5 E 

Но мой желаемый выход

Num ID 
6 3 C 
7 4 D 
8 5 E 

Что я здесь отсутствует?

+0

Вы «не хватает», который дублируется возвращает вектор, «F» для первого вхождения элемента, и T для каждое возникновение после этого. – Heroka

+1

'dff [! (Dff $ Num% in% dff $ Num [duplicated (dff $ Num)]),]' – RHertel

ответ

2

Вы можете попробовать:

dff[dff$Num %in% as.numeric(names(table(dff$Num)==1)[table(dff$Num)==1]),] 
    Num ID 
6 3 C 
7 4 D 
8 5 E 

Или с помощью dplyr

library(dplyr) 
dff %>% group_by(Num) %>% filter(n()==1) 
Source: local data frame [3 x 2] 
Groups: Num 

    Num ID 
1 3 C 
2 4 D 
3 5 E 
+0

Приятное решение dplyr. Мне это нравится. Спасибо @DatamineR – Sharath

+0

@Sharath приветствую :-) – DatamineR

Смежные вопросы