Я хотел бы выполнить повторную выборку большого набора данных с неравным количеством наблюдений в диапазоне данных, чтобы в каждом диапазоне было равное количество наблюдений.
Кажется, что rollapply был бы способом сделать это, но не похоже, что его можно убедить определить свое скользящее окно на основе значений данных?
Например:
set.seed(12345)
z <- sort(rnorm(100,100,40))
rollapply(z, 20, function(x){sample(x,20,replace=TRUE)}, by=20)
Это отлично справляется с получением списка чисел и передискретизацией его каждые 20 чисел, однако я хотел бы, чтобы он начинался с наименьшего значения и передискретизировался в пределах обычного диапазона значений. Для приведенного выше примера ячейки (слева) могут быть определены следующим образом:
(0:10)*(max(z)-min(z))/10+min(z)
Я знаю, что мог бы написать цикл for и сделать это, но я ищу более быстрый/простой метод.
Входной вектор с неравным распределением наблюдений между диапазонами 1:10 и 11:20: c( 1, 2, 2, 3, 3, 3, 5, 6, 7, 11, 13, 13, 20) Повторная выборка 5 раз на 2 интервалах по 10 единиц (т. е. с 1:10 и 11:20) каждый интервал, выбранный 5 раз, может дать:
c( 3, 1, 7, 3, 2, 11,20,11,13,20)