从数据中的下一个\上一行获取值

时间:2018-03-23 11:52:33

标签: r spss predictive

这就是我的数据集的样子,问题是如何创建包含从上一行导入的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的行。
然后算法必须从该行获取需求并将其放入我的新变量中。

2 个答案:

答案 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,那么您将在本周的行(而不是下周)中获得上周的要求。