2015-07-03 152 views
1

我想要刪除具有重複日期和ID的行。我總是希望在刪除重複項時保留第一行。在r中有條件地刪除行

**df1** 
ID Date  score1 score2 
73 2014-05-04 5  7 
73 2014-05-04 5  8 
73 2014-07-12 2  7 
73 2014-07-12 4  3 
79 2014-09-11 3  7 
82 2014-05-04 5  7 
82 2014-05-04 5  6 

**Wanteddf** 
ID Date  score1 score2 
73 2014-05-04 5  7 
73 2014-07-12 2  7 
79 2014-09-11 3  7 
82 2014-05-04 5  7 
+1

你有什麼試過?你的問題基本上是讓別人寫你的代碼。 –

+0

我正在嘗試一些與@akrun的答案非常相似的東西,但我只是犯了一個愚蠢的錯誤 – Swanny

回答

3

使用dplyr

library(dplyr) 
df1 %>% distinct(Date, ID) 
5

使用base R

df1[!duplicated(df1[1:2]),] 
# ID  Date score1 score2 
#1 73 2014-05-04  5  7 
#3 73 2014-07-12  2  7 
#5 79 2014-09-11  3  7 
#6 82 2014-05-04  5  7 
+0

所以我回頭看看我的數據,由於某種原因,這個功能在他們沒有重複時刪除了很多我的數據,但當我使用@jeremycg它工作正常 – Swanny

+0

@Swanny我測試了它,它工作正常。例如。 'v1 < - 1:9; v1 [!duplicated(v1)]# [1] 1 2 3 4 5 6 7 8 9'或使用此示例'df1 < - data.frame(v1 = 1:9,v2 = C(1,1,2:5,6:8)); nrow(df1 [!duplicated(df1),])#[1] 9' – akrun

+0

@Swanny任何機會,你都可以發佈一個小例子來重現問題。我會建議使用'dput'即'dput(smalldata)' – akrun