में जोड़वाई इंटरैक्शन मैट्रिक्स मैं आर में एक जोड़ीदार मैट्रिक्स की गणना करने की कोशिश कर रहा हूं जो कि व्यक्तियों के साथ अन्य व्यक्तियों के साथ बातचीत करने की संख्या की गणना करता है (इसलिए मैट्रिक्स में व्यक्तियों की संख्या के अनुरूप पंक्तियों और स्तंभों की संख्या शामिल होगी)। मेरे पास एक डेटाफ्रेम है जो अलग-अलग कॉलम में "अभिनेता" और "सहयोगी" सूचीबद्ध करता है।आर
nn <- data.frame(actors=c('DOL','DOL','DOL','DOL','DOL','NOR','NOR','NOR','NIN','JOJ'),partners=c('JOJ','JOJ','NOR','NOR','NIN','NIN','DOL','JOJ','NOR','NOR'))
डेटा ऐसी है कि बातचीत की दिशा अप्रासंगिक है, इसलिए प्रत्येक कोशिका बार प्लस Y पर अलग-अलग एक्स में कार्य करता है समय की संख्या Y आदर्श रूप में एक्स पर कार्य करता है, डेटा फ्रेम से ऊपर होना चाहिए की संख्या की गणना करना चाहिए एक मैट्रिक्स है कि इस तरह दिखता है दे:
DOL JOJ NOR NIN
DOL 0 2 3 1
JOJ 2 0 2 0
NOR 3 2 0 2
NIN 1 0 2 0
मैं अपने डेटासेट में प्रत्येक व्यक्ति के माध्यम से चक्र के लिए एक पाश लिखना शुरू किया और दोनों अभिनेता से साथी और partner-> अभिनेता> उसका/उसकी बातचीत गिनती करने के लिए। मुझे यकीन है कि यह काम करेगा, लेकिन आदर्श नहीं है क्योंकि पूर्ण डेटासेट काफी बड़ा है। क्या कोई बेहतर तरीका है?
अद्यतन: प्रतिक्रिया के लिए धन्यवाद! दोनों समाधान महान काम करते हैं! मैं जोश के सुझाव के कार्यान्वयन को पोस्ट कर रहा हूं, जो बहुत उपयोगी था।
x <- with(nn, table(actors, partners))
y <- t(x)
# unique individuals
u <- unique(c(rownames(x),colnames(x)))
m <- matrix(0,ncol=length(u),nrow=length(u),dimnames=list(u,u))
i1 <- as.matrix(expand.grid(rownames(x),colnames(x)))
i2 <- as.matrix(expand.grid(rownames(y),colnames(y)))
m[i1] <- x[i1]
m[i2] <- m[i2] + y[i2]
साफ, इसलिए यह अनिवार्य रूप से '(एनएन, टेबल (अभिनेता, सहयोगी) + टेबल (साझेदार, अभिनेता)) है' सही? – thelatemail
इस समाधान के लिए धन्यवाद! मैंने देखा कि यह काम नहीं करता है यदि ट्रांसपोज़ेड तालिका उसी पंक्ति और कॉलम नाम को मूल के रूप में साझा नहीं करती है, जो तब हो सकती है जब कुछ इंटरैक्शन केवल एक दिशा में दिखाई देते हैं। मैं सभी संभावित व्यक्तियों के साथ एक मास्टर मैट्रिक्स बनाकर इसके आसपास मिला, फिर सूचकांक का उपयोग केवल पंक्तियों और स्तंभों को जोड़ने के लिए किया जो जोड़ने से पहले मेल खाते थे। मैंने इस तरह के इंडेक्स की गणना की (एक मूल और ट्रांसपोज़ेड टेबल दोनों के लिए) 'i <- as.matrix (expand.grid (rownames (x), colnames (x))) ' – boon