【发布时间】:2016-03-21 20:22:30
【问题描述】:
我是 R 新手。我必须根据以下标准编写一些代码来清除潜在的重复实验室记录。
我希望有人可以在dplyr 中帮助我如何做到这一点?我知道 R 中有一个重复函数,lubridate 包中还有一个日期函数,可以轻松定义日期差异。
清理规则如下:
如果收款日期距离上次收款日期6个月内且类型为“相同”,则删除收款日期较晚的记录.
-
如果收集日期与上次收集日期在 6 个月内且类型为“不同”,则保留这两个记录。
如果收集日期在 6 个月内,并且一个记录是噬菌体类型,另一个记录是 NA 噬菌体类型,则删除记录6 个月内的 NA 噬菌体类型。
我想创建一个名为“删除标记strong>”的新列来标记应删除的记录,以便我们在删除这些记录之前进行检查。
这是一个数据集。有 5 个客户有重复记录,我已经在数据集之后包含了预期的结果。
dat0<-read.table(text="
ID Collection_Date Type
9318 5/8/2014 SE_8
29210 2/9/2015 SE_19
31733 10/27/2014 SE_13a
31733 10/29/2014 SE_13a
35463 4/14/2015 SE_13
260717 1/7/2016 SE_8
267125 7/15/2014 SE_8
276105 12/11/2014 SE_13a
276105 1/25/2015 NA
276195 11/20/2015 SE_13a
280415 9/21/2014 SE_8
280957 4/28/2015 SE_22
281839 1/6/2016 SE_13a
281839 11/21/2016 NA
302594 8/30/2015 SE_13a
423090 1/2/2016 SE_13
434579 1/10/2015 SE_13a
438046 4/15/2015 SE_22
438046 5/19/2015 SE_8
438396 1/14/2016 SE_13a
453374 2/19/2014 SE_35
519832 1/4/2015 SE_8
520665 8/15/2014 SE_13
520665 10/9/2014 SE_13
",sep="",header=TRUE)
5 个重复客户的预期结果:
31733 27-Oct-2014 SE_13a Keep
31733 29-Oct-2014 SE_13a Delete # because the record is within 6 months and type is the same
#-------------------
276105 11-Dec-2014 SE_13a Keep
276105 25-Jan-2015 NA Delete # because type is missing and record is within 6 months of the record above
#-------------------
281839 06-Jan-2016 SE_13a Keep
281839 21-Nov-2016 NA Keep # because dates are more than 6 months
#-------------------
438046 15-Apr-2015 SE_22 Keep
438046 19-May-2015 SE_8 Keep # because type is different even if date is within 6 months
#-------------------
520665 15-Aug-2014 SE_13 Keep
520665 09-Oct-2014 SE_13 Delete
【问题讨论】:
-
你能提供一些额外的信息吗?例如:一个 ID 是否有可能出现两次以上?每个 ID 的日期是否总是按升序排列?
标签: r duplicates