I want to change the following data set :
date A B
01/01/2018 391 585
02/01/2018 420 595
03/01/2018 455 642
04/01/2018 469 654
05/01/2018 611 900
06/01/2018 449 640
07/01/2018 335 522
08/01/2018 726 955
09/01/2018 676 938
10/01/2018 508 740
11/01/2018 562 778
12/01/2018 561 761
13/01/2018 426 609
14/01/2018 334 508
My desired output is as follows:
date A B
07/01/2018 3130 4538
14/01/2018 3793 5289
In which, the numbers of Columns A and B are summed over seven days of weeks. Indeed, I want to convert daily data to weekly data. I found two solutions on the Stackoverflow website. One solution would be using library(tidyquant), and following code
library(tidyquant)
newfd<-df %>%
tq_transmute(select = A,
mutate_fun = apply.weekly,
FUN = sum)
The code produces weekly data for Column A while I need all columns. (I have many columns). I also used the following code. But, I don’t know how I can develop the code for all columns.
library(slider)
slide_period_dfr(.x = califo, .i=as.Date(califo$date),
.period = "week",
.f = ~data.frame(week_ending = tail(.x$ date,1),
week_freq = sum(.x$A)),
.origin = as.Date("2018-01-01"))
You can compute an index
id = 0:(nrow(df) - 1)
, once the series is arranged by date, and use that to define to which period (week) belongs each dateweek = id %/% 7
. Date linked to each week is chosen indate = max(date)
to be the last date of the week. Other options are possible.Created on 2021-06-05 by the reprex package (v0.3.0)