Подсчет парных комбинаций для нескольких переменных
У меня есть набор данных, где каждый столбец имеет 4 двоичных переменных. Как мне создать сетку 4 x 4 с подсчетом каждой пары комбинаций переменных?
Вот пример фрейма данных:
Person <- c("Bob", "Jim", "Sarah", "Dave")
A <- c(1,0,1,1)
B <- c(1,1,1,0)
C <- c(0,0,0,1)
D <- c(1,0,0,0)
Таким образом, в сетке 4x4 пересечение A и B будет иметь 2, потому что у Боба и Сары есть 1 для A и B.
1 ответ
Решение
Для двух векторов A
а также B
это будет перекрестный продукт:
res <- A %*% B
или жеres <- crossprod(A, B)
чтобы составить матрицу всех комбинаций, используйте два уровня for
или же apply
:
data <- list(A,B,C,D)
res <- matrix(NA, nrow = n, ncol = m, dimnames = dimnames(product.m))
for(i in 1:n) {
for(j in 1:i) {
res[i,j] <- crossprod(data[[i]], data[[j]])
}
}
Здесь я заполняю только одну половину матрицы. Затем вы можете скопировать значения так:
res[upper.tri(res)] <- t(res)[upper.tri(res)]