R-按时间间隔汇总data.frame

R-按时间间隔汇总data.frame,r,dataframe,summarize,R,Dataframe,Summarize,我试图为每个星期五在data.frame上求和一个变量 随机数据帧 我想要什么 我试过的 我考虑过使用dplyr::summary和aggregate,但我不知道如何正确设置by条件 mydf %>% group_by( ID ) %>% summarize( Var_Sum = aggregate( Var , sum , by=list ( (mydf$Weekday)=="Friday") ) ) 我已经看到一些类似的问题正在使用cut函数解决,但这似乎是将条件设置为标准

我试图为每个星期五在data.frame上求和一个变量

随机数据帧 我想要什么 我试过的 我考虑过使用dplyr::summary和aggregate,但我不知道如何正确设置by条件

mydf %>% group_by( ID ) %>% summarize( Var_Sum = aggregate( Var , sum ,  by=list ( (mydf$Weekday)=="Friday") )  )

我已经看到一些类似的问题正在使用cut函数解决,但这似乎是将条件设置为标准周?我还不太熟悉它。

我们需要使用cumsum创建一个分组变量


看来我问这个问题而不是自己想出来是对的。谢谢是否有可能改进这一点以允许多个变量?例如,有100个变量要汇总。如果这需要问一个新问题,请告诉我,我会这样做。要汇总更多变量,请使用“全部汇总”或“每个汇总”而不是“汇总”。好的,明白了。干杯@danh
df_ToGet = 
data.frame( 
    "ID"   = c( rep( "A" , 3) , rep( "B" , 2 ) ),
    "Date" = c( "2017-09-08","2017-09-15","2017-09-22","2017-08-04","2017-08-11"  ),
    "Var_Sum"  = c( 1 , 9 , 11 , 15, 10 )
    )
mydf %>% group_by( ID ) %>% summarize( Var_Sum = aggregate( Var , sum ,  by=list ( (mydf$Weekday)=="Friday") )  )
mydf %>%
    slice(seq_len(tail(which(WeekDay== "Friday"), 1))) %>% 
    group_by(ID, grp = lag(cumsum(WeekDay == "Friday"), default = 0)) %>% 
    summarise(Date = Date[WeekDay == "Friday"], Var = sum(Var, na.rm = TRUE)) %>%
    ungroup() %>%
    select(-grp)
# A tibble: 5 x 3
#     ID       Date   Var
#   <fctr>     <date> <dbl>
#1      A 2017-09-08     1
#2      A 2017-09-15     9
#3      A 2017-09-22    11
#4      B 2017-08-04    15
#5      B 2017-08-11    10