【发布时间】:2014-02-17 19:29:16
【问题描述】:
我有一组数据格式:
ID Minutes Value
xxxx 118 3
xxxx 121 4
xxxx 122 3
yyyy 122 6
xxxx 123 4
yyyy 123 8
... ... ....
每个 ID 都是一个病人,每个值就是那一分钟的血压。我想为每个点之前的 60 分钟和之后的 60 分钟创建一个滚动平均值。但是 - 正如您所看到的,缺少分钟(所以我不能只使用行号)并且我想为每个唯一 ID 创建平均值(因此 ID xxxx 的平均值不能包括分配给 ID yyyy 的值)。听起来 rollapply 或 rollingstat 可能是选项,但尝试将它们拼凑起来却收效甚微......
如果需要进一步说明,请告诉我。
【问题讨论】:
-
您的数据有多大?处理此问题的一种快速而肮脏的方法是简单地插入 NAs 以弥补丢失的时间
-
如果你不想使用
data.table,你可以设置一个循环。大致上,for (jtime in 1:N) mean(DF[DF$Minutes > (jtime-60) & DF$Minutes < (jtime + 60),3]) -
对添加到 data.table 滚动功能的此类功能感兴趣的读者请为这个 FR 投票:github.com/Rdatatable/data.table/issues/3241
标签: r time-series moving-average