我正在努力解决一个我似乎想不起来的问题。
我目前有一个包含每个鞋子品牌/颜色组合的交易数据的表,我们可以称这个表为transactions
。
这是表中数据的一个样本,但我有数千个跨品牌的此类交易。表中有5-6个以上的鞋品牌,不同的价格有多个交易。color列的值总是white黑色或.
shoe_brand (fct) | color (fct) | transaction_date (POSIXct) | price (dbl) | 耐克 | 白色 | 2019-05-27 01:19:28 | 200 | 耐克
---|---|---|---|
白色 | 2019-05-28 14:51:09 | 500 | |
白色 | 2019-05-30 16:41:05 | 600 | |
黑色 | 2019-05-31 20:30:48 | 350 | |
黑色 | 2019-06-05 18:22:19 | 220 | |
白色 | 2019-06-12 13:26:59 | 540 | |
黑色 | 2019-06-23 00:28:45 | 335 | |
白色 | 2019-07-02 04:26:19 | 695 |
我们可以先用arrange
,然后用slice_head
(假设'transaction_date'是POSIXct
)
library(dplyr)
df1 %>%
arrange(shoe_brand, color, transaction_date) %>%
group_by(shoe_brand, color) %>%
slice_head(n = 2)
分组后,我们可以使用top_n
:
library(dplyr)
df %>%
arrange(shoe_brand, color, transaction_date) %>%
group_by(shoe_brand, color) %>%
top_n(1)
输出:
shoe_brand color transaction_date price
<chr> <chr> <date> <time>
1 Adidas Black 2019-06-23 00:28:45
2 Adidas White 2019-06-12 13:26:59
3 Nike Black 2019-05-31 20:30:48
4 Nike White 2019-05-30 16:41:05