【发布时间】:2018-12-18 16:39:24
【问题描述】:
我正在使用 R 中的数据表,其中包含有关美国杂货店所售产品的季度信息。特别是,有一个日期列、一个商店列和一个产品列。例如,这里是数据的一个(非常小的)子集:
Date StoreID ProductID
2000-03-31 10001 20001
2000-03-31 10001 20002
2000-03-31 10002 20001
2000-06-30 10001 20001
对于每家商店中的每种产品,我想知道该产品在该日期之前在该商店中销售了多少个连续个季度。例如,如果我们只查看在特定商店出售的订书机,我们会:
Date StoreID ProductID
2000-03-31 10001 20001
2000-06-30 10001 20001
2000-09-30 10001 20001
2000-12-31 10001 20001
2001-06-30 10001 20001
2001-09-30 10001 20001
2001-12-31 10001 20001
假设这是 StoreID 和 ProductID 组合的所有数据,我想分配一个新变量:
Date StoreID ProductID V
2000-03-31 10001 20001 1
2000-06-30 10001 20001 2
2000-09-30 10001 20001 3
2000-12-31 10001 20001 4
2001-06-30 10001 20001 1
2001-09-30 10001 20001 2
2001-12-31 10001 20001 3
2002-03-31 10001 20001 4
2002-06-30 10001 20001 5
2002-09-30 10001 20001 6
2002-12-31 10001 20001 7
2004-03-30 10001 20001 1
2004-06-31 10001 20001 2
请注意,我们在 2000 年第四季度之后结转,因为该产品在 2001 年第一季度没有售出。此外,我们在 2002 年第四季度之后结转,因为该产品在 2003 年第一季度没有售出。下一次售出该产品是 2004 年第一季度,它被分配了一个 1。
我遇到的问题是,我的实际数据集非常大(大约 1000 万行),所以这需要有效地完成。我能想出的唯一技术效率极低。任何建议将不胜感激。
【问题讨论】:
-
为什么 V 在第 5 行重置为 1?是因为时差太大还是因为过年?另外,请使用
dput函数添加更多数据(多个商店和产品)。 -
它重置,因为产品 20001 在商店 10001 一个季度内没有售出。请注意日期跳过。
-
我的解决方案是否有效或有什么我可以改进的地方?
-
@PoGibas 我现在正在评估它。看起来很有前途!