r - 不规则时间序列上的条件滚动平均值(移动平均值)

标签 r time-series moving-average

我有一组格式如下的数据:

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可能是选项,但尝试将其组合在一起几乎没有成功...

请让我知道是否需要进一步说明。

最佳答案

您可以轻松填写​​缺少的分钟(值将设置为NA),然后使用rollapply

library(data.table)
library(zoo)

## Convert to data.table
DT <- data.table(DF, key=c("IDs", "Minutes"))

## Missing Minutes will be added in. Value will be set to NA. 
DT <- DT[CJ(unique(IDs), seq(min(Minutes), max(Minutes)))]

## Run your function
DT[, rollapply(value, 60, mean, na.rm=TRUE), by=IDs]

另外,您无需保留“填充”的分钟数/NA值:

您可以一次完成所有操作:
## Convert your DF to a data.able
DT <- data.table(DF, key=c("IDs", "Minutes"))

## Compute rolling means, with on-the-fly padded minutes
DT[ CJ(unique(IDs), seq(min(Minutes), max(Minutes))) ][, 
  rollapply(value, 60, mean, na.rm=TRUE), by=IDs]

关于r - 不规则时间序列上的条件滚动平均值(移动平均值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21372735/

相关文章:

r - gganimate 根据时间对多条路径进行动画处理

r - mtsdi中的arima方法

R:根据前一个非 NA 行中的值分配前一个非 NA 值 'n' 次

python - 没有任何窗口大小的移动平均值或滚动平均值 Pandas

python 错误 - numpy 数组上的移动平均值

r - Shiny :在多个选项卡中重复使用相同的绘图不起作用

r - 使用 R 中的值计算计数按组执行频率表

尝试使用 fix() 时,Mac OS X 10.13 上的 RStudio 获取 X11 不可用错误

linq - 获取每日计数时,如何使 LINQ 查询中显示零计数?

python - "Running"加权平均