r - 仅当特定百分比的数据可用时才使用 rollapply 计算平均值

标签 r dplyr mean zoo rollapply

我有一列每小时数据,想使用 rollapply 计算每小时的 24 小时滚动平均值。我的数据包含 NA,如果 24 小时内 75% 的数据可用,我只想计算滚动平均值,否则我希望考虑 24 滚动平均值 NA

  df %>%
        mutate(rolling_avg = rollapply(hourly_data, 24, FUN = mean ,align = "right", fill = NA ))

如何修改上面的代码来完成这个?

最佳答案

定义一个函数来完全按照你所说的去做:

f <- function( v ) {
  if( sum(is.na(v)) > length(v)*0.25 ) return(NA)
  mean(v, na.rm = TRUE)
}

然后用它代替mean:

df %>% mutate(rolling_avg = rollapply(hourly_data, 24, FUN = f, 
                                     align = "right", fill = NA ))

关于r - 仅当特定百分比的数据可用时才使用 rollapply 计算平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45468092/

相关文章:

r - 覆盖ggplot2图例文本

响应式(Reactive) Shiny 模块共享数据

r - 使用 R 管道时,没有适用于 'tbl_vars' 应用于类 "c(' fseq', 'function' ) 的对象的方法

r - 检查间隔开始和结束时间是否重叠

R:在列表上使用应用函数来获取多个值的平均值

node.js - 如何在openshift中设置上传文件夹?

c++ - 从 R 覆盖 C++ 编译标志的系统默认值

python - 在 R 中导入带有网状结构的 matplotlib

r - 绑定(bind)嵌套列表中存在的 tibbles 行

r - 三维数组的边际总结