2012-11-27 11 views
8

私はXMLドキュメントファイルを持っています。ファイルの一部を次のようになります。このXMLファイルからxmlファイルからRデータフレームを作成する方法

-<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の列とRのデータフレームを作成したいです。 attrdomv列には、カテゴリ変数のすべてのレベルが含まれている必要があります。データフレームは次のようになります。

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

私はこのような不完全なコードを持っている:

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

あなたは私のRコードを完了していただけますか?私は助けていただきありがとうございます!

<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> 

あなたはほとんどありました:

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 

しかし、最後のフィールドは、あなたが望んでいた形式を持っていない、これは正しいtaxlots.shp.xmlファイルであると仮定すると、

+1

有効なxmlファイルを教えてください。 – agstudy

+0

@agstudy:XMLファイルをどのように送信するのか教えてください。 – POTENZA

+0

ここではできませんが、SkyDriveのようなファイルアップロードサービスを使用してリンクを投稿することができますfile agstudy

答えて

9

。そうするには、いくつかの追加ステップが必要です:

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

upvote coz prettyかつxpathSApplyよりも短いです! – agstudy

関連する問題