【发布时间】:2017-02-20 12:43:29
【问题描述】:
我有一个包含 30 万多个案例的数据集,其中一个客户 ID 可能会重复多次。每个客户也有一个与之相关的日期和等级。我希望能够只保留唯一的客户 ID,首先按日期排序,然后如果有重复日期的重复 ID,它将按排名排序(保持排名最接近 1)。我的数据示例如下:
Customer.ID Date Rank
576293 8/13/2012 2
576293 11/16/2015 6
581252 11/22/2013 4
581252 11/16/2011 6
581252 1/4/2016 5
581600 1/12/2015 3
581600 1/12/2015 2
582560 4/13/2016 1
591674 3/21/2012 6
586334 3/30/2014 1
理想的结果应该是这样的:
Customer.ID Date Rank
576293 11/16/2015 6
581252 1/4/2016 5
581600 1/12/2015 2
582560 4/13/2016 1
591674 3/21/2012 6
586334 3/30/2014 1
【问题讨论】:
-
看来您应该对数据进行排序,然后使用
unique()或duplicated()去除重复的ID。 -
如果能通过
dput函数提供样本数据就更好了。 -
您的结果没有唯一的客户 ID
-
你的问题不清楚。你能解释一下客户 ID 576293 和 581252 的输出吗?
-
df %>% mutate(Date = as.Date(Date, '%m/%d/%Y')) %>% group_by(Customer.ID) %>% arrange(desc(Date), Rank) %>% slice(1)
标签: r sorting duplicates