如何将 xml 文件转换为 R 数据框
How to convert a xml file to a R data frame
我想将以下 xml 文件转换为 R 数据框 (https://www.dropbox.com/s/wwejpr0nfcj6gnw/20130919_20130920_SLD_FCST_ACTUAL_20210507_15_57_58_v1.xml?dl=1)
我曾尝试使用 XML 包和 xml2 包,但没有成功。我是 xml 的新手,希望得到任何帮助。
在 XML 包中,我尝试了 xmlParse 和 xmlToDataFrame。在 xml2 包中,我尝试了 read_xml 和 xml_find_all 函数,其中 none 有效。
更新:以下Onyambu提供的解决方案对我有效,但如果其他社区成员有其他解决此问题的方法,请随时提供其他解决方案。
我建议您将 XML 文件转换为 CVS 文件(您可以在 excel 中执行此操作),然后使用命令 read.csv()
.
一种方法是:
a <- 'https://www.dropbox.com/s/wwejpr0nfcj6gnw/20130919_20130920_SLD_FCST_ACTUAL_20210507_15_57_58_v1.xml?dl=1'
library(purrr)
library(rvest)
h <- c("data_item", "resource_name", "opr_date", "interval_num",
"interval_start_gmt", "interval_end_gmt", "value")
read_html(a) %>%
html_nodes("rto report_item")%>%
map_dfr(~map_dfc(setNames(h, h),
~html_text(html_nodes(.y, .x)), .y = .x), .id = "grp")
A tibble: 120 x 8
grp data_item resource_name opr_date interval_num interval_start_~ interval_end_gmt value
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 7 2013-09-19T13:0~ 2013-09-19T14:0~ 20425
2 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 24 2013-09-20T06:0~ 2013-09-20T07:0~ 20424
3 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 12 2013-09-19T18:0~ 2013-09-19T19:0~ 20425
4 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 14 2013-09-19T20:0~ 2013-09-19T21:0~ 20425
5 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 18 2013-09-20T00:0~ 2013-09-20T01:0~ 20458
6 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 19 2013-09-20T01:0~ 2013-09-20T02:0~ 20454
7 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 21 2013-09-20T03:0~ 2013-09-20T04:0~ 20443
8 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 23 2013-09-20T05:0~ 2013-09-20T06:0~ 20430
9 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 4 2013-09-19T10:0~ 2013-09-19T11:0~ 20425
10 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 5 2013-09-19T11:0~ 2013-09-19T12:0~ 20425
# ... with 110 more rows
我想将以下 xml 文件转换为 R 数据框 (https://www.dropbox.com/s/wwejpr0nfcj6gnw/20130919_20130920_SLD_FCST_ACTUAL_20210507_15_57_58_v1.xml?dl=1)
我曾尝试使用 XML 包和 xml2 包,但没有成功。我是 xml 的新手,希望得到任何帮助。
在 XML 包中,我尝试了 xmlParse 和 xmlToDataFrame。在 xml2 包中,我尝试了 read_xml 和 xml_find_all 函数,其中 none 有效。
更新:以下Onyambu提供的解决方案对我有效,但如果其他社区成员有其他解决此问题的方法,请随时提供其他解决方案。
我建议您将 XML 文件转换为 CVS 文件(您可以在 excel 中执行此操作),然后使用命令 read.csv()
.
一种方法是:
a <- 'https://www.dropbox.com/s/wwejpr0nfcj6gnw/20130919_20130920_SLD_FCST_ACTUAL_20210507_15_57_58_v1.xml?dl=1'
library(purrr)
library(rvest)
h <- c("data_item", "resource_name", "opr_date", "interval_num",
"interval_start_gmt", "interval_end_gmt", "value")
read_html(a) %>%
html_nodes("rto report_item")%>%
map_dfr(~map_dfc(setNames(h, h),
~html_text(html_nodes(.y, .x)), .y = .x), .id = "grp")
A tibble: 120 x 8
grp data_item resource_name opr_date interval_num interval_start_~ interval_end_gmt value
<chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 7 2013-09-19T13:0~ 2013-09-19T14:0~ 20425
2 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 24 2013-09-20T06:0~ 2013-09-20T07:0~ 20424
3 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 12 2013-09-19T18:0~ 2013-09-19T19:0~ 20425
4 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 14 2013-09-19T20:0~ 2013-09-19T21:0~ 20425
5 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 18 2013-09-20T00:0~ 2013-09-20T01:0~ 20458
6 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 19 2013-09-20T01:0~ 2013-09-20T02:0~ 20454
7 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 21 2013-09-20T03:0~ 2013-09-20T04:0~ 20443
8 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 23 2013-09-20T05:0~ 2013-09-20T06:0~ 20430
9 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 4 2013-09-19T10:0~ 2013-09-19T11:0~ 20425
10 1 SYS_FCST_~ CA ISO-TAC 2013-09~ 5 2013-09-19T11:0~ 2013-09-19T12:0~ 20425
# ... with 110 more rows