2016-06-07 107 views
0

我有一個數據集,其中每列有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因爲Bob和薩拉有1個爲A和B.

回答

1

對於雙矢量AB這將是一個叉積:

res <- A %*% Bres <- crossprod(A, B)

讓所有組合的矩陣使用兩個級別forapply

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)] 
+0

我需要它爲每對組合,而不是特定的一個 – user1923975