Пакеты или функции для итоговой матрицы в R, которая работает аналогично dplyr? - PullRequest
0 голосов
/ 29 мая 2020

Я запускаю очень большое моделирование с 10 000 циклов и для достижения лучшей производительности я преобразовал коды для генерации выходных данных матрицы, а не кадра данных. Бегает быстрее. Однако для каждого l oop мне нужно суммировать результаты. Например, для приведенной ниже матрицы

mtx <- matrix(data = c(rep(c(1, 2), each = 6),
                       rep(c(3, 5, 7), each = 4),
                       rnorm(0, 1, n = 12)),
          ncol = 3)
colnames(mtx) <- c("A", "B", "Value")

я хочу суммировать количество наблюдений в каждой группе A и B и рассчитать средние значения Value, как вы можно было бы сделать с group_by() и summarize() в dplyr, если это фрейм данных:

mtx %>% group_by(A, B) %>% summarize(N = n(), MEAN = mean(Value))

Существуют ли какие-либо функции / пакеты для выполнения этого непосредственно в матрице, без преобразования ее в фрейм данных? Поскольку моделирование слишком велико, сбор всех необработанных выходных данных и суммирование после for l oop не вариант.

Ответы [ 2 ]

3 голосов
/ 29 мая 2020

Вы можете использовать aggregate непосредственно в матрице.

aggregate(Value ~ A + B, data=mtx, mean)
  A B      Value
1 1 3 -0.2282783
2 1 5  0.5021404
3 2 5 -0.1693665
4 2 7  0.5118390
1 голос
/ 29 мая 2020

Вариант с tapply

tapply(mtx[, 'Value'], list(mtx[, 'A'], mtx[, 'B']), FUN = mean)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...