Подсчет парных комбинаций для нескольких переменных

У меня есть набор данных, где каждый столбец имеет 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)]
Другие вопросы по тегам