2015-08-18 17 views
0

我有這樣的日常收入數據幀:如何按每7行進行分組,並按中位數彙總這7個值?

  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   

我想組每隔7天,並聚集體7裏就創下采用中位數。

edit1:它不一定是日曆周,只是隨意的7天組。

所以它會像

week median-earning 
    1 11 
    2 22 

等等...

我如何R中實現這一目標?

+0

在你的約會靈感欄,您使用的實際日期或只是整數? – maj

+0

這是實際日期。像2014-9-13,將其轉換爲整數更容易? –

+0

重要的是要知道,當你說每7天,你的意思是按日曆周?或者你想在任意一天開始? – Benjamin

回答

4
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)) 

和基礎R版本

sapply(split(theData$earning, c(0, rep(1:(nrow(theData)-1)%/%7))), median) 

編輯:由上述

theData %>% mutate(seven_day_index = 1:nrow(theData) %/% 7) %>% 
      group_by(seven_day_index) %>% 
      summarise(median_earnings = median(earning) 
+0

感謝@nongkrong,感謝您獲得'seven_day_index'。 – Benjamin

+0

已編輯。比我通常處理這些事情要冷得多。 – Benjamin

+0

謝謝,本傑明和nongkrong –

相關問題