【发布时间】:2019-01-13 19:11:45
【问题描述】:
我有一个日期列表,每个日期都有一个值。
这就是我的数据框现在的样子。请注意,日期中可以有重复,但 value 中的条目也会以相同的值重复(即第 2 行和第 3 行具有相同的日期,但各自的值也相同)。
date value
1 2018-02-08 1
2 2018-02-09 2
3 2018-02-09 2
4 2018-02-10 4
... ...
这就是我希望我的数据框的样子
date value weekavg
1 2018-02-08 1 ...
2 2018-02-09 2 ...
3 2018-02-09 2 ...
4 2018-02-10 4 ...
5 2018-02-11 0 ...
6 2018-02-12 0 ...
7 2018-02-13 0 ...
8 2018-02-14 0 ...
9 2018-02-15 0 1
... ... ...
为了澄清,第九行中的条目是通过查找在它之前一周发生的日期来计算的,因此对于 2018-02-15,日期范围为 2018-02-08 到 2018-02-13 .因此,结果为 1,因为 1+2+4+0+0+0+0 = 7。我如何在 R 中执行此操作,然后对每一行执行此操作?
------ 可重现的例子-----
数据
lines <- "date value
1 2018-02-08 NA
2 2018-02-08 NA
3 2018-02-09 NA
4 2018-02-10 295
5 2018-02-10 295
6 2018-02-11 329
7 2018-02-12 242
8 2018-02-12 242
9 2018-02-13 317
10 2018-02-14 341
11 2018-02-15 292
12 2018-02-16 363
13 2018-02-17 380
14 2018-02-18 319
15 2018-02-19 307
16 2018-02-20 328
17 2018-02-21 290"
df <- read.table(text = lines)
newDF <- merge(df, transform(unique(df), mean = rollmeanr(value, 7, fill = NA)))
平均列对我来说只是不适用。
附:为图像 cmets 道歉,我不知道。非常感谢您的帮助。
【问题讨论】:
-
为此类任务编写的
zoo包,特别是zoo::rollapply。 -
过去 35 分钟一直在查看 zoo 包,无法弄清楚如何正确使用它来解决我的问题。你有什么办法可以尝试回答这个问题?我看了看,但没有找到任何与我的问题足够相似的动物园信息来帮助我。在这里挣扎:/
标签: r time-series average zoo