首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用R中的XML文件创建适当的数据帧

问使用R中的XML文件创建适当的数据帧
EN

Stack Overflow用户
提问于 2019-03-07 06:28:15
回答 1查看 25关注 0票数 0

使用以下世界银行数据:GDP CURRENT USD

我想使用Rstudio中的XML包创建一个合适的数据帧。我使用xmlToDataFrame方法的问题是它不能识别节点,并且只显示一个包含15576个变量的观察值……

关于堆栈上提出的其他方法,我没有设法创建一个好的数据框架,其中rownames = year,3 colomn ("Country","Indicator","Value")

提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

发布于 2019-03-07 06:57:39

您可以执行以下操作

代码语言:javascript
复制
library(XML)
library(tidyverse)

xml <- xmlParse("API_NY.GDP.MKTP.CD_DS2_en_xml_v2_10475111.xml")

选项1

代码语言:javascript
复制
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

我们需要两个xmlSApply调用来分别获取值和名称。

选项2

代码语言:javascript
复制
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

我们使用xmlToDataFrame将节点的list强制转换为data.frame;不幸的是,我们丢失了字段名,因此我们需要以一种临时的方式将名称添加为列名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55033196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档