2015-07-03 153 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