Ниже приведен пример матрицы:
mat<- matrix(c(1,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,
2,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,
0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,
0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,1,0,0,1,0,1,1,0,0,1,0,1,
1,1,0,0,0,0,0,0,1,0,1,2,1,0,0,0), nrow=16, ncol=6)
dimnames(mat)<- list(c("a", "c", "f", "h", "i", "j", "l", "m", "p", "q", "s", "t", "u", "v","x", "z"),
c("1", "2", "3", "4", "5", "6"))
Я хочу сгруппировать столбцы или столбцы, а затем объединить данные для каждой группы.Во-первых, я хотел бы разместить два столбца данных.Сгруппированные столбцы должны быть смежными друг с другом (т. Е. Столбцы 1 и 2, столбцы 5 и 6, НЕ столбцы 4 и 6).Где начинается биннинг в матрице, случайное.Например, в матрице из 600 столбцов первые два столбца могут быть столбцами 545 и 546 и следующими столбцами 3 и 4.Я хотел бы сделать выборку без замены, чтобы комбинация не бралась дважды.Агрегация определяется как вычисление сумм строк для ячейки rowSums()
.Обобщенные результаты будут новым столбцом в матрице результатов.Количество столбцов в матрице результатов будет ограничено количеством случайных выборок.
Размер корзины продолжает увеличиваться.Затем размер ячейки увеличивается до 3, так что объединяются 3 смежных столбца данных.Агрегированные данные будут помещены в другую матрицу результатов.Этот процесс будет продолжаться до тех пор, пока корзина не станет размером фрейма данных.Все матрицы результатов будут помещены в список матриц.
Я разместил аналогичный вопрос для альтернативной техники биннинга здесь: Метод перемещения окна для агрегирования данных
Я попытался изменить код так, чтобы метод биннинга случайно выбиралn смежных столбцов и вычисляет суммы строк:
lapply(seq_len(ncol(mat) - 1), function(j) do.call(cbind,
lapply(sample(ncol(mat)-j, replace = FALSE, size = length(x)), function(i) rowSums(mat[, i:(i + j)]))))
Мне нужна помощь в изменении этой строки кода для случайной выборки без замены i смежных столбцов с размером ячейки i для n выборок и агрегирования каждой выборки с использованием сумм строк.Обратите внимание, что комбинации столбцов не могут быть пересчитаны, но столбцы могут быть пересчитаны, если они являются частью новых комбинаций.