使用R中的XML文件创建适当的数据框架

使用R中的XML文件创建适当的数据框架,r,xml,R,Xml,使用世界银行数据: 我想在Rstudio中使用XML包创建一个适当的数据帧 xmlToDataFrame方法的问题是,它无法识别节点,并且只显示一个包含15576个变量的观察结果 关于堆栈上提出的其他方法,我没有设法创建一个好的数据框架,行名=年份,3列国家、指标、值 提前感谢您的帮助 您可以执行以下操作 library(XML) library(tidyverse) xml <- xmlParse("API_NY.GDP.MKTP.CD_DS2_en_xml_v2_10475111.

使用世界银行数据:

我想在Rstudio中使用XML包创建一个适当的数据帧 xmlToDataFrame方法的问题是,它无法识别节点,并且只显示一个包含15576个变量的观察结果

关于堆栈上提出的其他方法,我没有设法创建一个好的数据框架,行名=年份,3列国家、指标、值


提前感谢您的帮助

您可以执行以下操作

library(XML)
library(tidyverse)

xml <- xmlParse("API_NY.GDP.MKTP.CD_DS2_en_xml_v2_10475111.xml")
我们使用xmlToDataFrame将节点列表强制为data.frame;不幸的是,我们丢失了字段名,因此我们需要以事后方式将名称添加为列名


请在问题主体中发布一个XML示例,足以识别模式。不要依赖我们下载将来读者无法使用的.zip文件。
df <- xml %>%
    getNodeSet("//record") %>%
    map(~setNames(
        rbind.data.frame(xmlSApply(.x, xmlValue), stringsAsFactors = F),
        xmlSApply(.x, xmlGetAttr, "name"))) %>%
    bind_rows()

head(df)
#  Country or Area              Item Year Value
#1           Aruba GDP (current US$) 1960
#2           Aruba GDP (current US$) 1961
#3           Aruba GDP (current US$) 1962
#4           Aruba GDP (current US$) 1963
#5           Aruba GDP (current US$) 1964
#6           Aruba GDP (current US$) 1965
colnames <- c("Country", "Item", "Year", "Value")
df <- xml %>%
    getNodeSet("//record") %>%
    xmlToDataFrame() %>%
    setNames(colnames)
head(df)
#  Country              Item Year Value
#1   Aruba GDP (current US$) 1960
#2   Aruba GDP (current US$) 1961
#3   Aruba GDP (current US$) 1962
#4   Aruba GDP (current US$) 1963
#5   Aruba GDP (current US$) 1964
#6   Aruba GDP (current US$) 1965