Efficient way to perform running total in the last 365 day window

前端 未结 3 1266
梦如初夏
梦如初夏 2021-01-06 10:40

This is what my data frame looks like:

library(data.table)

df <- fread(\'
                Name  EventType  Date  SalesAmount RunningTotal Runningt         


        
3条回答
  •  北恋
    北恋 (楼主)
    2021-01-06 11:29

    Using newer non-equi joins feature in data.table:

        df1 = df[.(iName=Name,start = Date - 365L, end = Date),
        on=.(Name=iName,Date >= start, Date <= end),nomatch = 0, allow.cart=TRUE][,
      .(MyTotal = sum(SalesAmount)), by=.(Name,Date = Date.1)]
    
    
        df[df1, on = .(Name,Date)]
    

提交回复
热议问题