2016-07-05 120 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),]