我有一个这样的每日收入数据框:
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中实现这一目标?
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)