同一分类下进行跨行计算

例题描述和简单分析

data.xlsx记录不同用户的事件发生时间,数据已按USER IDDATE列排序,部分数据如下:


A

B

C

1

USER ID

EVENT ID

DATE     

2

1

4

2020-01-01

3

1

5

2020-01-05

4

1

6

2020-01-13

5

2

7

2020-01-03

6

2

8

2020-01-05

7

2

9

2020-01-06

现在要计算事件真假列isTrue,规则是:同一个USER ID内,第1起事件一定为真,从第2起事件开始,如果与上一真事件的间隔大于等于10天,则该事件为真,其他事件均为假。结果应当如下:


A

B

C

D

1

USER ID

EVENT ID

DATE     

isTrue

2

1

4

2020-01-01

1

3

1

5

2020-01-05

0

4

1

6

2020-01-13

1

5

2

7

2020-01-03

1

6

2

8

2020-01-05

0

7

2

9

2020-01-06

0

上面要对组内事件进行跨行计算,涉及临时变量的赋值和改变

解法及简要说明

编写集算器脚本如下:

`

A

1

=file("data.xlsx").xlsimport@t()

2

=A2.derive(if('USER ID'!='USER   ID'[-1],(t=DATE,1),if(DATE-t>=10,(t=DATE,1),0)):isTrue)

3

=file("result.xlsx").xlsexport@t(A2)

A2:如果本行的USER ID与上一行不同,则说明当前行是组内第1起事件,此时赋值isTrue=1,同时临时变量 t= 本行 DATE。如果本行的USER ID与上一行相同,则进入组内计算,用临时变量和本行的日期计算间隔,大于等于10时赋值isTrue=1,同时修改临时变量 t= 本行 DATE。

问答搜集

 https://stackoverflow.com/questions/63838362/date-diff-between-many-rows-in-excel