这就是我的数据集的样子,问题是如何创建包含从上一行导入的demand
的最后一个变量:
week Client_ID Product_ID Demand (wanted: previous week demand)
2 xyz abc 20
3 xyz abc 30 20
4 xyz abc 43 30
2 sre abc 15
3 sre abc 16 15
4 sre abc 17 16
我的数据集的每一行都包含某个客户在某一周内某个产品的需求信息。我需要一个公式来查找Product-ID和Client-ID与当前行相同的行,以及当前周为当周减去1的行。
然后算法必须从该行获取需求并将其放入我的新变量中。
答案 0 :(得分:0)
您描述的过程是分布式延迟。它经常用于时间序列分析。你可以滞后一个看起来过去的变量,或者引导一个看起来未来的变量。
下次,请提供一些供用户使用的数据,并查看asking a good question上的StackOverflow指南。
您可以使用dplyr
来延迟变量。请参阅以下示例:
library(dplyr)
df <-
data.frame(
week = c(1, 2, 3, 4, 5, 6),
client_id = "xyz",
product_id = "abc",
demand = c(0, 10, 7, 20, 80, 55)
)
df$previous_demand <- lag(df$demand, n = 1)
答案 1 :(得分:0)
这在SPSS中也很容易。
sort cases by Client_ID Product_ID Week. /* to make sure next row=next week.
split file by Client_ID Product_ID. /* get next week value only for same ID.
create NxwkDemand=lead(demand, 1). /* get next week value in this week row.
如果您使用lag
代替lead
,那么您将在本周的行(而不是下周)中获得上周的要求。