这是我的数据框:
每个人的第一笔订单获得1,而所有后续订单根据价值排名,平局的解决办法是最后下单日期具有优先权。在这个例子中,John的2012年8月6日订单由于是在2010年11月1日之后下达,因此获得第2名。 2015年5月7日的订单是第1名,因为它是最大的。因此,即使该订单是20年前下达的,它也应该是第1名,因为它是John最高的订单价值。
有人知道我如何在R中做到这一点吗?在数据框中,我可以在指定变量组内排名吗?
customer_name order_dates order_values
1 John 2010-11-01 15
2 Bob 2008-03-25 12
3 Alex 2009-11-15 5
4 John 2012-08-06 15
5 John 2015-05-07 20
假设我想添加一个订单变量,按名称、最大订单日期和最后订单日期作为决胜者,排列最高的订单价值。
因此,最终数据应该如下所示:
customer_name order_dates order_values ranked_order_values_by_max_value_date
1 John 2010-11-01 15 3
2 Bob 2008-03-25 12 1
3 Alex 2009-11-15 5 1
4 John 2012-08-06 15 2
5 John 2015-05-07 20 1
每个人的第一笔订单获得1,而所有后续订单根据价值排名,平局的解决办法是最后下单日期具有优先权。在这个例子中,John的2012年8月6日订单由于是在2010年11月1日之后下达,因此获得第2名。 2015年5月7日的订单是第1名,因为它是最大的。因此,即使该订单是20年前下达的,它也应该是第1名,因为它是John最高的订单价值。
有人知道我如何在R中做到这一点吗?在数据框中,我可以在指定变量组内排名吗?
dplyr
中的dense_rank
是解决并列情况的一种方法。 - akrundata.table
,将order_values
和order_dates
按降序排列,然后按照customer_name
进行排序并赋予rnk
值。 - akrun