R: RunningTotal in the last 365 days window by Name

怎甘沉沦 提交于 2019-12-19 11:19:13

问题


This is what my data looks like. The rightmost column is my Desired Column.

Name  EventType  EventDate  SalesAmount RunningTotal Runningtotal(prior365Days)
John    Email      1/1/2014      0          0            0
John    Sale       2/1/2014     10          10           10
John    Sale       7/1/2014     20          30           30
John    Sale       4/1/2015     30          60           50 
John    Webinar    5/1/2015      0          60           50
Tom     Email      1/1/2014      0          0            0
Tom     Sale       2/1/2014     15          15           15
Tom     Sale       7/1/2014     10          25           25
Tom     Sale       4/1/2015     25          50           35 
Tom     Webinar    5/1/2015      0          50           35

I am just trying to get the running total of SalesAmount for each name in the last 365 days window. For the general "RunningTotal" column I used:

df<- df%>%
   group_by (Name)%>%
    mutate(RunningTotal = cumsum(SalesAmount))

But I dont know how to get the running total only in the last 365 day window.Kindly help. Your help is sincerely appreciated!


回答1:


df$EventDate <- as.Date(df$EventDate, format="%d/%m/%Y")
df <- df %>%
   group_by (Name) %>%
   arrange(EventDate) %>% 
   mutate(day = EventDate - EventDate[1])

f <- Vectorize(function(i)
    sum(df[df$Name[i] == df$Name & df$day[i] - df$day >= 0 & 
             df$day[i] - df$day <= 365, "SalesAmount"]), vec="i")
df$RunningTotal365 <- f(1:nrow(df))


来源:https://stackoverflow.com/questions/30535731/r-runningtotal-in-the-last-365-days-window-by-name

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!