2017-08-17 79 views
0

我正在尝试为下面的R代码找到相应的Pyspark代码。在Pyspark中等效的R公式

产生滞后变量

car <- 
    car %>% 
    group_by(Model) %>% 
    mutate(Target.1 = lag(Target, 3),Sales.1 = lag(Sales, 3)) 

任何想法? 感谢

回答

1

我想利用窗口函数应该工作,虽然你将需要一些东西来排序:

import pyspark.sql.functions as func 
from pyspark.sql.window import Window 

window = Window.partitionBy("Model").orderBy(???) 
car = car.withColumn("Target.1", func.lag("Target", 3).over(window))\ 
    .withColumn("Sales.1", func.lag("Sales", 3)) 
+0

我用这一个环路。我每个月都有3排。我正在使用以下条件。某些原因,结果不正确。 (3): if i <= 3: df = df.withColumn(“target1”,func.when(df.Month == 1,df.Target).otherwise(func.lag(df .Target,3).over(Window.partitionBy(a,b,c).orderBy(a,b,c)))) – Ramsey

+0

它是如何不正常工作的?你为什么同时拥有“因为我在范围(3)”和“如果我<= 3”,这似乎是多余的。 – aku

+0

你帮助我完美工作的人,我的逻辑错了。感谢您的帮助:) – Ramsey