可重复数据如下图所示:
library(pracma);library(zoo)
library(dplyr);library(tidyverse)
Tag<- c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5,5, 5,
6, 6, 6, 6, 6, 6, 6, 6, 6, 6)
Temp<- c(43, 44, 45, 41, 43, 38, 40, 41, 39, 37, 37, 39, 45, 42, 41, 43, 44, 39,38,
37, 43, 44, 45, 41, 43, 38, 40, 41, 39, 37, 37, 39, 45, 42, 41, 43, 44,
39, 38, 37, 43, 44, 45, 41, 43, 38, 40, 41, 39, 37, 37, 39, 45, 42, 41,43,
44, 39, 38, 37)
dfr=data.frame(Tag=Tag,Temp=Temp)
# Function for Applying Moving Average for x column
lag_apply <- function(x, n, callback){
k = length(x);
result = rep(0, k);
for(i in 1 : (k - n + 1)){
result[i] <- callback(x[i : (i + n -1)]);
}
return(result);
}
#Moving Average Calculation
dfr$MAvg_Temp<-ave(dfr$Tag,
FUN= function(x) lag_apply(dfr$Temp, 5, function(x){mean(x)}) )
#Grouping by Tag and performing peak function over MAvg_Temp
result <- dfr %>%
split(.$Tag) %>%
map(~findpeaks(.$MAvg_Temp, nups = 1, ndowns = 0, zero = "+", peakpat = NULL, minpeakheight = 33, minpeakdistance = 4, threshold = 0.42, npeaks = 11, sortstr = FALSE)) %>%
map_df(~data_frame(Temp = parse_number(.x[,1]),
Peak_Mid = parse_number(.x[,2]),
Peak_start = parse_number(.x[,3]),
Peak_End= parse_number(.x[,4])),
.id = 'Tag') %>%
arrange(Tag, Peak_Mid) %>%
group_by(Tag) %>%
mutate(Trend= (lead(Temp)-Temp)/(lead(Peak_Mid)-Peak_Mid))
数据说明:
第1列:标签(分组数据)
第2栏:温度数据数据
第3列:移动平均值Column 2
。
这里,当我为findpeak
(Temp)计算Column 2
时,没有错误。
但是当我在数据框的任何一列中传递Moving Average`` in the
findpeak函数I am getting error of **Missing Value TRUE/FALSE as shown below**.
缺少值TRUE / FALSE
[Error Message][1]
From my understanding error says.But when i check the column for
NA i did'nt find any
NA`时,我对此无能为力错误。请指导我这个!!
运行以上代码后,我得到以下错误 if中的错误(npeaks&gt; 0&amp;&amp; npeaks&lt; nrow(X)){: 缺少需要TRUE / FALSE的值