使用Pracma包中的findpeak函数分组识别峰值移动平均值获取错误MISSING VALUE WHERE TRUE / FALSE

时间:2017-08-11 07:28:25

标签: r dplyr multidplyr

可重复数据如下图所示:

 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**.
[Error Message][1] From my understanding error says
缺少值TRUE / FALSE .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的值

0 个答案:

没有答案