我使用聚合来创建一个接近我需要的数据框。但是,我在获得我想要的东西时遇到了问题。
假设原始数据如下:
data
Order Item Price Quantity
1 A 10 1
1 A 20 3
2 B 30 1
2 C 40 1
3 B 30 1
4 C 50 1
5 A 10 1
5 B 40 2
我现在根据商品和订单来汇总价格和数量。
data.new <- aggregate(cbind(price, quantity) ~ Order + Item, sum, data = data)
data.new
╔═══════╦══════╦═══════╦══════════╗
║ Order ║ Item ║ Price ║ Quantity ║
╠═══════╬══════╬═══════╬══════════╣
║ 1 ║ A ║ 30 ║ 4 ║
║ 2 ║ B ║ 30 ║ 1 ║
║ 2 ║ C ║ 40 ║ 1 ║
║ 3 ║ B ║ 30 ║ 1 ║
║ 4 ║ C ║ 50 ║ 1 ║
║ 5 ║ A ║ 10 ║ 1 ║
║ 5 ║ B ║ 40 ║ 2 ║
╚═══════╩══════╩═══════╩══════════╝
这适用于 Order = 1,但我需要每一行都是唯一的 Order。因此,我希望按每个唯一订单的最高价格来总结项目。项目只是一个高水平因素,可以说明是什么推动了独特订单的大部分销售价格。它应该如下所示:
data.new <- ????
data.new
╔═══════╦══════╦═══════╦══════════╗
║ Order ║ Item ║ Price ║ Quantity ║
╠═══════╬══════╬═══════╬══════════╣
║ 1 ║ A ║ 30 ║ 4 ║
║ 2 ║ C ║ 70 ║ 2 ║
║ 3 ║ B ║ 30 ║ 1 ║
║ 4 ║ C ║ 50 ║ 1 ║
║ 5 ║ B ║ 50 ║ 3 ║
╚═══════╩══════╩═══════╩══════════╝