आर

2009-07-23 13 views
10

में नेटवर्क डेटा में हेरफेर करना मेरे पास एन नोड्स के बीच किनारे के वजन का विवरण डेटा फ्रेम है। क्या इस तरह के डेटा के साथ काम करने के लिए कोई पैकेज है?आर

उदाहरण के लिए, मैं एक नेटवर्क के रूप में निम्नलिखित जानकारी प्लॉट करने के लिए करना चाहते हैं:

p1 p2 counts 
1 a b 100 
2 a c 200 
3 a d 100 
4 b c  80 
5 b d  90 
6 b e 100 
7 c d 100 
8 c e  40 
9 d e  60 

उत्तर

14

एक विकल्प network पैकेज, सांख्यिकीय सामाजिक नेटवर्क विश्लेषण के लिए R संकुल की statnet परिवार का हिस्सा है। यह नेटवर्क डेटा को एक अजीब तरीके से संभालता है, जो बड़े डेटा सेट के लिए अच्छा है। एक नेटवर्क वस्तु

  • में

    • लोड edgelist (पहले दो कॉलम) में गिना जाता है आवंटित बढ़त विशेषता वजन कहा जाता हो:

      नीचे, मैं निम्न कार्य करें।

    • जीप्लॉट के साथ नेटवर्क प्लॉट करें।
    • साजिश एक sociomatrix
    (निकटता मैट्रिक्स, जहां (i, j) सेल रिश्तेदार गिनती द्वारा छायांकित है का प्रतिनिधित्व ब्लॉक के सिर्फ एक 5x5 सेट) (सहायता पृष्ठ किनारों की मोटाई बदलने के लिए देखें।)
     
    A = read.table(file="so.txt",header=T) 
    A 
         p1 p2 counts 
        1 a b 100 
        2 a c 200 
        3 a d 100 
        4 b c  80 
        5 b d  90 
        6 b e 100 
        7 c d 100 
        8 c e  40 
        9 d e  60 
    
    library(network) 
    net = network(A[,1:2]) 
    # Get summary information about your network 
    net 
        Network attributes: 
         vertices = 5 
         directed = TRUE 
         hyper = FALSE 
         loops = FALSE 
         multiple = FALSE 
         bipartite = FALSE 
         total edges= 9 
         missing edges= 0 
         non-missing edges= 9 
         Vertex attribute names: 
         vertex.names 
        adjacency matrix: 
         a b c d e 
        a 0 1 1 1 0 
        b 0 0 1 1 1 
        c 0 0 0 1 1 
        d 0 0 0 0 1 
        e 0 0 0 0 0 
    
    set.edge.attribute(net,"weight",A[,3]) 
    gplot(net) 
    
    ## Another cool feature 
    s = as.sociomatrix(net,attrname="weight") 
    plot.sociomatrix(s) 
    
  • +0

    शानदार उत्तर! बहुत उपयोगी! – RHelp

    4

    यहाँ कैसे igraph में डेटा के एक नेटवर्क के भूखंड या नहीं:

    d <- data.frame(p1=c('a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd'), 
           p2=c('b', 'c', 'd', 'c', 'd', 'e', 'd', 'e', 'e'), 
           counts=c(100, 200, 100,80, 90,100, 100,40,60)) 
    
    library(igraph) 
    g <- graph.data.frame(d, directed=TRUE) 
    print(g, e=TRUE, v=TRUE) 
    tkplot(g, vertex.label=V(g)$name) 
    
    0

    मैं भी igraph में काम कर रहा है। ग्राफ बनाने का एक तरीका सभी "से" "नोड्स" की एक टेक्स्ट फ़ाइल में एक सूची लिखना है जिसे इसे ग्राफ़ ऑब्जेक्ट के रूप में वापस पढ़ा जाता है। ग्राफ ऑब्जेक्ट को कई ग्राफ सैद्धांतिक प्रक्रियाओं के अधीन किया जा सकता है और काफी बड़े नेटवर्क को संभाल सकता है।

    0

    मेरे अनुभव में, igraph बड़ा, ग्राफ-सैद्धांतिक काम के लिए मेरा पसंदीदा पैकेज है। यह स्मृति कुशल है और इसमें कुछ बहुत अच्छे एल्गोरिदम हैं। igraph एक आंतरिक edgelist- जैसे डेटा संरचना का उपयोग करता है।
    सरल/छोटी चीजों के लिए मैं 'sna' पैकेज ("सोशल नेटवर्क विश्लेषण") का उपयोग करता हूं। यह इंटरैक्टिव काम और छोटे नेटवर्क की साजिश के लिए बहुत अच्छा है। एसएनए एक आसन्नता-मैट्रिक्स डेटा संरचना का अधिक उपयोग करता है।

    +0

    नेटवर्क पैकेज में एक स्पैस कार्यान्वयन भी है। –