r - Average of last lowest N prior values by group -


basically want rolling average of lowest n values.

i have tried using

   mydata$lowest_n = rollapply(values, 5, mean(sort[1:5]), align=c('right')) 

but cannot work. again needs rolling time series data set. above code know has obvious error, don't have attempted methods in front of me. advice appreciated!!!!

if matters, have scenario many different groups, grouped using ddply()

my data =

  structure(list(date = structure(c(13586, 13587, 13594, 13635,    13656, 13657, 13686, 13710, 13712, 13718, 13726, 13753, 13783,    13791, 13874, 13895, 13910, 13917, 13923, 13930, 13958, 13970,    13977, 13978, 13991, 14018, 14021, 14066, 14070, 14073, 14104,    14112, 14118, 14138, 14220, 14269, 14293, 14473, 14631, 13566,    13692, 13916, 14084, 12677, 12984, 13035, 13222, 13406, 13417,    13483, 13539, 13580, 13607, 13644, 13693, 13698, 13713, 13714,    13726, 13727, 13750, 13754, 13777, 13809, 13810, 13812, 13819,    13832, 13853, 13893, 13944, 13954, 14015, 14021, 14050, 14051,    14092, 14104, 14119, 14134, 14209, 14218, 14267, 14302, 14309,    14334, 14337, 14379, 14391, 14428, 14449, 14475, 14525, 14546,    14552, 14579, 14589, 12545, 12587, 12693), class = "date"), value = c(15,    27, 15, 25, 16, 22, 27, 23, 16, 19, 22, 21, 15, 20, 22, 28, 22,    27, 20, 25, 28, 16, 16, 28, 24, 28, 22, 28, 22, 14, 28, 24, 16,    15, 28, 22, 28, 28, 27, 19, 20, 19, 24, 19, 25, 22, 24, 16, 28,    19, 18, 20, 20, 21, 19, 20, 22, 21, 20, 21, 23, 24, 17, 19, 28,    24, 30, 20, 20, 18, 21, 15, 16, 26, 19, 20, 19, 17, 20, 16, 18,    29, 21, 23, 18, 18, 26, 26, 25, 13, 13, 15, 18, 17, 20, 15, 18,    23, 29, 21)), .names = c("date", "value"), row.names = c(na,   100l), class = "data.frame") 

the code below gets part of way there: 100 row data.frame, creates vector of 96 observations using zoo::rollapply() function. it's not clear want first 4 observations, i'm ignoring part now, syntax expanded, or write more detailed function pass fun.

mydata <- structure(list(date = structure(c(13586, 13587, 13594, 13635,                                              13656, 13657, 13686, 13710, 13712, 13718, 13726, 13753, 13783,                                              13791, 13874, 13895, 13910, 13917, 13923, 13930, 13958, 13970,                                              13977, 13978, 13991, 14018, 14021, 14066, 14070, 14073, 14104,                                              14112, 14118, 14138, 14220, 14269, 14293, 14473, 14631, 13566,                                              13692, 13916, 14084, 12677, 12984, 13035, 13222, 13406, 13417,                                              13483, 13539, 13580, 13607, 13644, 13693, 13698, 13713, 13714,                                              13726, 13727, 13750, 13754, 13777, 13809, 13810, 13812, 13819,                                              13832, 13853, 13893, 13944, 13954, 14015, 14021, 14050, 14051,                                              14092, 14104, 14119, 14134, 14209, 14218, 14267, 14302, 14309,                                              14334, 14337, 14379, 14391, 14428, 14449, 14475, 14525, 14546,                                              14552, 14579, 14589, 12545, 12587, 12693), class = "date"),                           value = c(15, 27, 15, 25, 16, 22, 27, 23, 16, 19, 22, 21, 15, 20, 22, 28, 22,                                     27, 20, 25, 28, 16, 16, 28, 24, 28, 22, 28, 22, 14, 28, 24, 16,                                     15, 28, 22, 28, 28, 27, 19, 20, 19, 24, 19, 25, 22, 24, 16, 28,                                     19, 18, 20, 20, 21, 19, 20, 22, 21, 20, 21, 23, 24, 17, 19, 28,                                     24, 30, 20, 20, 18, 21, 15, 16, 26, 19, 20, 19, 17, 20, 16, 18,                                     29, 21, 23, 18, 18, 26, 26, 25, 13, 13, 15, 18, 17, 20, 15, 18,                                     23, 29, 21)),                      .names = c("date", "value"), row.names = c(na, 100l), class = "data.frame") lowest_n <-  zoo::rollapply(mydata$value, width=5, fun=function(x) mean(sort(x)[1:5], align=c('right'))) 

Comments

Popular posts from this blog

c - How to retrieve a variable from the Apache configuration inside the module? -

c# - Constructor arguments cannot be passed for interface mocks -

python - malformed header from script index.py Bad header -