2012-11-27 8 views
8

मेरे पास एक XML दस्तावेज़ फ़ाइल है। फ़ाइल का हिस्सा इस तरह दिखता है:एक XML फ़ाइल से आर डेटा फ्रेम बनाने के लिए कैसे करें

-<attr> 
    <attrlabl>COUNTY</attrlabl> 
    <attrdef>County abbreviation</attrdef> 
    <attrtype>Text</attrtype> 
    <attwidth>1</attwidth> 
    <atnumdec>0</atnumdec> 
    -<attrdomv> 
     -<edom> 
      <edomv>C</edomv> 
      <edomvd>Clackamas County</edomvd> 
      <edomvds/> 
     </edom> 
     -<edom> 
      <edomv>M</edomv> 
      <edomvd>Multnomah County</edomvd> 
      <edomvds/> 
     </edom> 
     -<edom> 
      <edomv>W</edomv> 
      <edomvd>Washington County</edomvd> 
      <edomvds/> 
     </edom> 
    </attrdomv> 
</attr> 

इस एक्सएमएल फ़ाइल से, मैं attrlabl, attrdef, attrtype, और attrdomv के कॉलम के साथ एक अनुसंधान डेटा फ्रेम बनाना चाहते हैं। कृपया ध्यान दें कि attrdomv कॉलम श्रेणी चर के लिए सभी स्तरों को शामिल करना चाहिए। डेटा फ्रेम इस तरह दिखना चाहिए:

doc <- xmlParse("taxlots.shp.xml") 
dataDictionary <- xmlToDataFrame(getNodeSet(doc,"//attrlabl")) 

तुम मेरे आर कोड को पूरा करें सका:

attrlabl attrdef    attrtype attrdomv 
COUNTY  County abbreviation Text  C Clackamas County; M Multnomah County; W Washington County 

मैं इस तरह एक अधूरी कोड है? मैं किसी भी मदद की सराहना करता हूं!

<attr> 
    <attrlabl>COUNTY</attrlabl> 
    <attrdef>County abbreviation</attrdef> 
    <attrtype>Text</attrtype> 
    <attwidth>1</attwidth> 
    <atnumdec>0</atnumdec> 
    <attrdomv> 
     <edom> 
      <edomv>C</edomv> 
      <edomvd>Clackamas County</edomvd> 
      <edomvds/> 
     </edom> 
     <edom> 
      <edomv>M</edomv> 
      <edomvd>Multnomah County</edomvd> 
      <edomvds/> 
     </edom> 
     <edom> 
      <edomv>W</edomv> 
      <edomvd>Washington County</edomvd> 
      <edomvds/> 
     </edom> 
    </attrdomv> 
</attr> 

आप लगभग वहाँ थे:

+1

क्या आप एक वैध xml फ़ाइल दे सकते हैं? – agstudy

+0

@agstudy: क्या आप कृपया मुझे बता सकते हैं कि मेरी एक्सएमएल फाइल आपको कैसे भेजूं? – POTENZA

+0

आप यहां नहीं कर सकते हैं, लेकिन आप स्काईडाइव जैसे फ़ाइल अपलोड सेवा का उपयोग कर सकते हैं और लिंक file agstudy

उत्तर

9

इस मान लिया जाये कि सही taxlots.shp.xml फ़ाइल है

doc <- xmlParse("taxlots.shp.xml") 
xmlToDataFrame(nodes=getNodeSet(doc1,"//attr"))[c("attrlabl","attrdef","attrtype","attrdomv")] 
    attrlabl    attrdef attrtype            attrdomv 
1 COUNTY County abbreviation  Text CClackamas CountyMMultnomah CountyWWashington County 

लेकिन पिछले क्षेत्र नहीं है प्रारूप आप चाहते थे। ऐसा करने के लिए, कुछ अतिरिक्त चरणों की आवश्यकता है:

step1 <- xmlToDataFrame(nodes=getNodeSet(doc1,"//attrdomv/edom")) 
step1 
    edomv   edomvd edomvds 
1  C Clackamas County   
2  M Multnomah County   
3  W Washington County 

step2 <- paste(paste(step1$edomv, step1$edomvd, sep=" "), collapse="; ") 
step2 
[1] "C Clackamas County; M Multnomah County; W Washington County" 

cbind(xmlToDataFrame(nodes= getNodeSet(doc1, "//attr"))[c("attrlabl", "attrdef", "attrtype")], 
     attrdomv= step2) 
    attrlabl    attrdef attrtype              attrdomv 
1 COUNTY County abbreviation  Text C Clackamas County; M Multnomah County; W Washington County 
+0

अपवोट कोज़ पोस्ट कर सकते हैं xpathSApply से सुंदर और छोटा! – agstudy

संबंधित मुद्दे