2016-07-05 81 views
-2

我想知道如何根据数据框第一列上的标识号删除我选择调用为重复项的行条目。大多数函数像duplicate()和unique()通常会检查每一行中的每个值,以便将其删除。另一方面,我有兴​​趣只选择具有类似ID的观测值中的第一个出现。 下面是一个例子基于一个值删除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

'df [!duplicated(df $ ID),]' – Sotos

+1

'library(dplyr)'然后 'df%>%distinct(df $ ID)' –

回答

1

我觉得你真的想使用一个filter()操作为此与arrange()

例如:

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

会给你最近的每个ID的观察。

你也可以使用一个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

您可以使用复制功能。 如果DF是你的数据框:

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),]