如何按每7行分组,并按中位数汇总这7个值?

Luc*_*hen 1 r

我有一个这样的每日收入数据框:

         date    earning
            1 -40.495074
            2 -88.636625
            3 134.400976
            4  66.325253
            5 -86.337511
            6  -1.266815
            7 267.944212
            8  65.247053
            9  86.177537
           10  64.540579        
Run Code Online (Sandbox Code Playgroud)

我想每7天进行分组,并使用中位数汇总7天的收入。

edit1:不必是日历周,也可以是任意7天作为组。

所以就像

week  median-earning
   1  11
   2  22
Run Code Online (Sandbox Code Playgroud)

等等...

如何在R中实现这一目标?

Ben*_*min 5

library(dplyr)
theData <- data.frame(date = 1:10,
                      earning = c(-40, -88, -134, 66, -86, -1, 267, 65, 86, 64))

theData$seven_day_index <- c(0, rep(1:(nrow(theData)-1)%/%7))

group_by(theData, seven_day_index) %>%
  summarise(median_earnings = median(earning))
Run Code Online (Sandbox Code Playgroud)

和基本的R版本

sapply(split(theData$earning, c(0, rep(1:(nrow(theData)-1)%/%7))), median)
Run Code Online (Sandbox Code Playgroud)

编辑:受上述启发

theData %>% mutate(seven_day_index = 1:nrow(theData) %/% 7) %>%
            group_by(seven_day_index) %>%
            summarise(median_earnings = median(earning)
Run Code Online (Sandbox Code Playgroud)