R中的汇总每周数据

Bti*_*rt3 3 datetime r

我确信这是直截了当的,但我似乎无法让它发挥作用.我有一个代表每日总数的数据框.我只是想按周计算总数,如果没有代表一周则保留零.R中最好的方法是什么?如果重要,我会从CSV中读取数据并将其转换为R中的一个日期.

这是我的数据框p1的结构:

'data.frame':   407 obs. of  2 variables:
 $ date:Class 'Date'  num [1:407] 14335 14336 14337 14340 14341 ...
 $ amt : num  45 150 165 165 45 45 150 150 15 165 ...
Run Code Online (Sandbox Code Playgroud)

和前几个......

> head(p1)
        date amt
1 2009-04-01  45
2 2009-04-02 150
3 2009-04-03 165
4 2009-04-06 165
5 2009-04-07  45
6 2009-04-08  45
Run Code Online (Sandbox Code Playgroud)

提前谢谢了.

一个注意事项:我之前看过一篇文章,但无法让它发挥作用

Vit*_*hKa 5

lubridate库的解决方案:

library(lubridate)
Lines <- "date,amt
2009-04-01,45
2009-04-02,150
2009-04-03,165
2009-04-13,165
2009-04-14,45
2009-04-15,45
2009-05-15,45"
df <- read.csv(textConnection(Lines))
Run Code Online (Sandbox Code Playgroud)

如果缺少周数不需要0,那很简单:

weeks <- week(df$date)
sums <- tapply(df$amt, weeks, sum)
# 14  15  16  20 
#360 210  45  45 
Run Code Online (Sandbox Code Playgroud)

为零缺失周提供零:

span <- min(weeks):max(weeks)
out <- array(0, dim = length(span), dimnames = list(span))
out[dimnames(sums)[[1]]] <- sums
# 14  15  16  17  18  19  20 
#360 210  45   0   0   0  45 
Run Code Online (Sandbox Code Playgroud)