计算超过 18 小时的臭氧值的最大移动平均值
calculating maximum moving average for more than 18 hours of ozone value
我正在尝试计算臭氧的最大移动平均值。我写了这段代码。我想编写一个代码来计算一天中超过 18 小时的臭氧值时的移动平均值。怎么写呢?
我写的代码,是真的还是假的?
Data= data.frame(Date=rep(seq.Date(as.Date("2013-03-21"),by=1, length.out = 2),each=24),
Time=c(0:23),
o3= (c(1:43,NA,NA,NA,NA,NA)))
Unique_DATE = na.omit( unique( Data[,1] ) )
COUNT = c()
for( i in 1:length( Unique_DATE ) ){
COUNT[i] = 24-sum( is.na( Data[ Data[,1] == Unique_DATE[i] , 3 ] ) )
}
mean(COUNT>=18)
library( forecast )
MAX_MOVING_AVERAGE = c()
for( i in 1:length( Unique_DATE ) ){
MAX_MOVING_AVERAGE[i] =
max( ma( Data[ Data[,1] == Unique_DATE[i] , 3 ]
, order=8 ) , na.rm = TRUE )
}
MAX_MA=data.frame( Unique_DATE , MAX_MOVING_AVERAGE )
您可以使用 dplyr
并将代码减少到更小的部分。
Data <- data.frame(Date=rep(seq.Date(as.Date("2013-03-21"),by=1,
length.out = 3),each=24),
Time=c(0:23),
o3=
(c(1:43,NA,NA,NA,NA,NA,1:12,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA)))
library(forecast)
library(dplyr)
summary_all <-
Data %>%
dplyr::group_by(Date) %>%
dplyr::summarize(max_ma=max(ma(o3, order=8), na.rm=T),
count=sum(!is.na(o3)))
summary <- summary_all %>% dplyr::filter(count >= 18)
summary
# A tibble: 2 x 3
Date max_ma count
<date> <dbl> <int>
1 2013-03-21 20 24
2 2013-03-22 39 19
我又加了一天的数据,一天内少于18个数据点,以说明如何统计数量,然后过滤掉数量不足的数据。
我正在尝试计算臭氧的最大移动平均值。我写了这段代码。我想编写一个代码来计算一天中超过 18 小时的臭氧值时的移动平均值。怎么写呢?
我写的代码,是真的还是假的?
Data= data.frame(Date=rep(seq.Date(as.Date("2013-03-21"),by=1, length.out = 2),each=24),
Time=c(0:23),
o3= (c(1:43,NA,NA,NA,NA,NA)))
Unique_DATE = na.omit( unique( Data[,1] ) )
COUNT = c()
for( i in 1:length( Unique_DATE ) ){
COUNT[i] = 24-sum( is.na( Data[ Data[,1] == Unique_DATE[i] , 3 ] ) )
}
mean(COUNT>=18)
library( forecast )
MAX_MOVING_AVERAGE = c()
for( i in 1:length( Unique_DATE ) ){
MAX_MOVING_AVERAGE[i] =
max( ma( Data[ Data[,1] == Unique_DATE[i] , 3 ]
, order=8 ) , na.rm = TRUE )
}
MAX_MA=data.frame( Unique_DATE , MAX_MOVING_AVERAGE )
您可以使用 dplyr
并将代码减少到更小的部分。
Data <- data.frame(Date=rep(seq.Date(as.Date("2013-03-21"),by=1,
length.out = 3),each=24),
Time=c(0:23),
o3=
(c(1:43,NA,NA,NA,NA,NA,1:12,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA)))
library(forecast)
library(dplyr)
summary_all <-
Data %>%
dplyr::group_by(Date) %>%
dplyr::summarize(max_ma=max(ma(o3, order=8), na.rm=T),
count=sum(!is.na(o3)))
summary <- summary_all %>% dplyr::filter(count >= 18)
summary
# A tibble: 2 x 3
Date max_ma count
<date> <dbl> <int>
1 2013-03-21 20 24
2 2013-03-22 39 19
我又加了一天的数据,一天内少于18个数据点,以说明如何统计数量,然后过滤掉数量不足的数据。