使用此世界银行数据: GDP CURRENT USD
我想使用Rstudio中的xmlToDataFrame
包创建一个合适的数据框
我对方法{{1}}的问题是它无法识别节点,并且仅显示一个具有15576个变量的观察结果...
关于在堆栈上提出的其他方法,我没有设法创建一个行名称=年和3列(“国家”,“指标”,“值”)的良好数据框
预先感谢您的帮助!
答案 0 :(得分:1)
您可以执行以下操作
{% for t in topics|dictsortreversed:"count_of_questions" %}
{{ t.count_of_questions }}
{% endfor %}
library(XML)
library(tidyverse)
xml <- xmlParse("API_NY.GDP.MKTP.CD_DS2_en_xml_v2_10475111.xml")
我们需要两次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
我们使用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
;不幸的是,我们失去了字段名称,因此我们需要以事后方式将这些名称添加为列名称。