आर

2012-05-16 6 views
6

में डमीकोडेड अवलोकनों से एक सह-घटना मैट्रिक्स का निर्माण करना क्या दो पहलुओं की गणना वाले सह-घटना मैट्रिक्स के लिए एक पहलू मौजूद है या नहीं, इस पर डमी के साथ डेटाफ्रेम को परिवर्तित करने का कोई आसान तरीका है?आर

उदा। इस

X <- data.frame(rbind(c(1,0,1,0), c(0,1,1,0), c(0,1,1,1), c(0,0,1,0))) 
X 
    X1 X2 X3 X4 
1 1 0 1 0 
2 0 1 1 0 
3 0 1 1 1 
4 0 0 1 0 

से इस

X1 X2 X3 X4 
X1 0 0 1 0 
X2 0 0 2 1 
X3 1 2 0 1 
X4 0 1 1 0 

उत्तर

11

यह करने के लिए जा चाल करना होगा:

X <- as.matrix(X) 
out <- crossprod(X) # Same as: t(X) %*% X 
diag(out) <- 0  # (b/c you don't count co-occurrences of an aspect with itself) 
out 
#  [,1] [,2] [,3] [,4] 
# [1,] 0 0 1 0 
# [2,] 0 0 2 1 
# [3,] 1 2 0 1 
# [4,] 0 1 1 0 

ठीक एक तुम से पता चला है की तरह एक data.frame में परिणाम प्राप्त करने के लिए, आप कर सकते हैं फिर कुछ ऐसा करें:

nms <- paste("X", 1:4, sep="") 
dimnames(out) <- list(nms, nms) 
out <- as.data.frame(out) 
+0

नोट करना दिलचस्प है कि विकर्ण बस एक्स – bdemarest

+0

का कॉलम रकम बहुत अच्छा है; सरल और आसान +1 –

+0

@bdemarest - variance-covariance matrices की समानता पर विचार करना भी दिलचस्प है, जो 'टी (एक्स)% *% X' की गणना करने से पहले कॉलम को केंद्रित करने में भिन्न होता है। –