【发布时间】:2013-05-31 18:02:17
【问题描述】:
我使用聚合来创建一个接近我需要的数据框。但是,我在获得我想要的东西时遇到了问题。
假设原始数据如下:
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 ║
╚═══════╩══════╩═══════╩══════════╝
【问题讨论】:
-
仅供参考 - 示例数据的所有疯狂格式使得任何人几乎不可能真正使用,这有点违背了目的。比我的编辑更好的是提供
dput(data)的输出。 -
抱歉,我不确定如何为 stackexchange 设置表格格式,并引用了这个 meta.stackexchange.com/questions/73566/… 导致我找到了这个 sensefulsolutions.com/2010/10/format-text-as-table.html
-
别担心。只是当您为 R 问题提供示例数据时,最重要的是以一种便于人们转移到他们自己的 R 会话的方式进行。