拓端tecdat|如何从xml文件创建R语言数据框dataframe

原文链接:http://tecdat.cn/?p=16788

 

问题重现 

软件:R语言

环境:windows

问题描述:我有一个XML文档文件。文件的一部分如下所示:

  1.  
    <?xml version="1.0" encoding="UTF-8"?>
  2.  
    <List>
  3.  
    <SubCategory>
  4.  
    <ID>BO</ID>
  5.  
    <Name>Bookcases</Name>
  6.  
    </SubCategory>
  7.  
    <SubCategory>
  8.  
    <ID>CH</ID>
  9.  
    <Name>Chairs</Name>
  10.  
    </SubCategory>
  11.  
    <SubCategory>
  12.  
    <ID>LA</ID>
  13.  
    <Name>Labels</Name>
  14.  
    </SubCategory>
  15.  
    <SubCategory>
  16.  
    <ID>TA</ID>
  17.  
    <Name>Tables</Name>
  18.  
    </SubCategory>
  19.  
    <SubCategory>
  20.  
    <ID>ST</ID>
  21.  
    <Name>Storage</Name>
  22.  
    </SubCategory>
  23.  
    <SubCategory>
  24.  
    <ID>FU</ID>
  25.  
    <Name>Furnishings</Name>
  26.  
    </SubCategory>
  27.  
    <SubCategory>
  28.  
    <ID>AR</ID>
  29.  
    <Name>Art</Name>
  30.  
    </SubCategory>
  31.  
    <SubCategory>
  32.  
    <ID>PH</ID>
  33.  
    <Name>Phones</Name>
  34.  
    </SubCategory>
  35.  
    <SubCategory>
  36.  
    <ID>BI</ID>
  37.  
    <Name>Binders</Name>
  38.  
    </SubCategory>
  39.  
    <SubCategory>
  40.  
    <ID>AP</ID>
  41.  
    <Name>Appliances</Name>
  42.  
    </SubCategory>
  43.  
    <SubCategory>
  44.  
    <ID>PA</ID>
  45.  
    <Name>Paper</Name>
  46.  
    </SubCategory>
  47.  
    <SubCategory>
  48.  
    <ID>AC</ID>
  49.  
    <Name>Accessories</Name>
  50.  
    </SubCategory>
  51.  
    <SubCategory>
  52.  
    <ID>EN</ID>
  53.  
    <Name>Envelopes</Name>
  54.  
    </SubCategory>
  55.  
    <SubCategory>
  56.  
    <ID>FA</ID>
  57.  
    <Name>Fasteners</Name>
  58.  
    </SubCategory>
  59.  
    <SubCategory>
  60.  
    <ID>SU</ID>
  61.  
    <Name>Supplies</Name>
  62.  
    </SubCategory>
  63.  
    <SubCategory>
  64.  
    <ID>MA</ID>
  65.  
    <Name>Machines</Name>
  66.  
    </SubCategory>
  67.  
    <SubCategory>
  68.  
    <ID>CO</ID>
  69.  
    <Name>Copiers</Name>
  70.  
    </SubCategory>
  71.  
    </List>

从这个XML文件中,我想创建一个具有ID,name 列的R数据框。请注意,name和ID应包含变量的所有级别。

解决方案

假设这是正确的taxlots.shp.xml文件:

  1.  
    <?xml version="1.0" encoding="UTF-8"?>
  2.  
    <List>
  3.  
    <SubCategory>
  4.  
    <ID>BO</ID>
  5.  
    <Name>Bookcases</Name>
  6.  
    </SubCategory>
  7.  
    <SubCategory>
  8.  
    <ID>CH</ID>
  9.  
    <Name>Chairs</Name>
  10.  
    </SubCategory>
  11.  
    <SubCategory>
  12.  
    <ID>LA</ID>
  13.  
    <Name>Labels</Name>
  14.  
    </SubCategory>
  15.  
    <SubCategory>
  16.  
    <ID>TA</ID>
  17.  
    <Name>Tables</Name>
  18.  
    </SubCategory>
  19.  
    <SubCategory>
  20.  
    <ID>ST</ID>
  21.  
    <Name>Storage</Name>
  22.  
    </SubCategory>
  23.  
    <SubCategory>
  24.  
    <ID>FU</ID>
  25.  
    <Name>Furnishings</Name>
  26.  
    </SubCategory>
  27.  
    <SubCategory>
  28.  
    <ID>AR</ID>
  29.  
    <Name>Art</Name>
  30.  
    </SubCategory>
  31.  
    <SubCategory>
  32.  
    <ID>PH</ID>
  33.  
    <Name>Phones</Name>
  34.  
    </SubCategory>
  35.  
    <SubCategory>
  36.  
    <ID>BI</ID>
  37.  
    <Name>Binders</Name>
  38.  
    </SubCategory>
  39.  
    <SubCategory>
  40.  
    <ID>AP</ID>
  41.  
    <Name>Appliances</Name>
  42.  
    </SubCategory>
  43.  
    <SubCategory>
  44.  
    <ID>PA</ID>
  45.  
    <Name>Paper</Name>
  46.  
    </SubCategory>
  47.  
    <SubCategory>
  48.  
    <ID>AC</ID>
  49.  
    <Name>Accessories</Name>
  50.  
    </SubCategory>
  51.  
    <SubCategory>
  52.  
    <ID>EN</ID>
  53.  
    <Name>Envelopes</Name>
  54.  
    </SubCategory>
  55.  
    <SubCategory>
  56.  
    <ID>FA</ID>
  57.  
    <Name>Fasteners</Name>
  58.  
    </SubCategory>
  59.  
    <SubCategory>
  60.  
    <ID>SU</ID>
  61.  
    <Name>Supplies</Name>
  62.  
    </SubCategory>
  63.  
    <SubCategory>
  64.  
    <ID>MA</ID>
  65.  
    <Name>Machines</Name>
  66.  
    </SubCategory>
  67.  
    <SubCategory>
  68.  
    <ID>CO</ID>
  69.  
    <Name>Copiers</Name>
  70.  
    </SubCategory>
  71.  
    </List>

XML格式的数据很少以允许该xmlToDataFrame功能正常工作的方式进行组织。最好提取列表中的所有内容,然后将列表绑定到数据框中:

 

 

  1.  
    data <- xmlParse("ProductSubcategory.xml")
  2.  
     
  3.  
    xml_data <- xmlToList(data)
  4.  
     
  5.  
    dataDictionary <- xmlToDataFrame(getNodeSet(data,"//SubCategory"))


最受欢迎的见解

1.如何解决线性混合模型中畸形拟合(SINGULAR FIT)的问题

2.在UBUNTU虚拟机上安装R软件包

3.WINDOWS中用命令行执行R语言命令

4.R语言GGSURVPLOT绘制生存曲线报错 : OBJECT OF TYPE ‘SYMBOL

posted @ 2020-10-12 17:00  拓端tecdat  阅读(100)  评论(0编辑  收藏  举报