Как работает аргумент 'group' в rowum? - PullRequest
0 голосов
/ 17 января 2019

Я понимаю, что делает rowsum(), но я пытаюсь заставить его работать на себя. Я использовал пример, представленный в R, который структурирован так:

x <- matrix(runif(100), ncol = 5)
group <- sample(1:8, 20, TRUE)
xsum <- rowsum(x, group)

Что такое матрица значений, получаемых с помощью xsum, и как получаются значения. То, что я думал, происходило, было то, что значения, полученные из group, собирались использовать, чтобы указать, сколько записей из матрицы использовать в rowsum. Например, скажем, что группа = (2,4,3,1,5). Я думал, что это будет означать, что первые две записи, идущие по строке, будут выбраны в качестве первой записи для xsum. Похоже, что это не то, что происходит.

1 Ответ

0 голосов
/ 17 января 2019

rowsum добавляет все строки с одинаковым значением группы. Давайте возьмем более простой пример.

m <- cbind(1:4, 5:8)
m
##      [,1] [,2]
## [1,]    1    5
## [2,]    2    6
## [3,]    3    7
## [4,]    4    8
group <- c(1, 1, 2, 2)
rowsum(m, group)
##   [,1] [,2]
## 1    3   11
## 2    7   15

Поскольку первые две строки соответствуют группе 1, а последние 2 строки - группе 2, он суммирует первые две строки, дающие первую строку выходных данных, и суммирует последние 2 строки, дающие вторую строку выходных данных.

rbind(`1` = m[1, ] + m[2, ], `2` = m[3, ] + m[4, ])
##   [,1] [,2]
## 1    3   11
## 2    7   15

То есть 3 формируется сложением 1 из строки 1 m и 2 из строки 2 m. 11 формируется путем добавления 5 из строки 1 м и 6 из строки 2 м.

7 и 15 сформированы аналогично.

...