我确信这是直截了当的,但我似乎无法让它发挥作用.我有一个代表每日总数的数据框.我只是想按周计算总数,如果没有代表一周则保留零.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)
提前谢谢了.
一个注意事项:我之前看过一篇文章,但无法让它发挥作用
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)
| 归档时间: |
|
| 查看次数: |
3622 次 |
| 最近记录: |