Is this the kind of thing you're going for?
library(dplyr)
library(lubridate)
library(tidyr)
df <- data.frame(
group_id = rep(c("group_1","group2"), each = 3),
date = c("2013-12-1","2013-12-2","2013-12-3","2014-1-1","2014-1-2","2014-1-3"),
value = c(3,4,2,5,8,6))
df$date <- as.POSIXct(df$date)
df$yrwk <- paste(year(df$date), week(df$date), sep = "-")
weekly_df <- df %>%
group_by(group_id, yrwk) %>%
summarise(value = sum(value)) %>%
ungroup()
pivot_wider(weekly_df,
id_cols = "group_id",
names_from = "yrwk",
values_from = "value")
# A tibble: 2 x 4
group_id `2013-48` `2013-49` `2014-1`
<chr> <dbl> <dbl> <dbl>
1 group_1 7 2 NA
2 group2 NA NA 19