仅当特定百分比的数据可用时才使用 rollapply 计算平均值
Calculate mean using rollapply only if certain percent of data is available
我有一列每小时数据,想用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 ))
我有一列每小时数据,想用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 ))