[英]Import XML file to data frame in R
我在將具有特定結構的 XML 文件導入 R 中的 dataframe 時遇到困難。
可以在此處找到 XML 文件的示例: XML 導入
最終結果應該是一個結構良好的數據框,直到 XML 文件的最深嵌套級別 (Adms):
這意味着數據在其他列中重復,但這不是問題。
我已經嘗試了在 StackOverflow 上找到的用於 XML 導入的多種解決方案,但由於 XML 文件的結構,我無法讓它工作。
因此,目前我需要 go 到 Excel,並使用“GetData”選項將 XML 轉換為 CSV,但由於我有 100 個這樣的 XML 需要處理,所以我想自動執行此任務。
預先感謝您的幫助!
這將為您提供每行一位患者:
library(xml2)
library(XML)
library(tidyverse)
xml <-
read_xml("~/Downloads/00000123456_0000071234567123_20150922101212_TH.XML") %>%
xmlParse()
xml %>%
xmlToDataFrame(nodes = getNodeSet(xml, "//Patient")) %>%
as_tibble()
#> # A tibble: 12 x 15
#> Id Name Firstname HomeID Location1 Location2 Location3 Location4
#> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 360923… Van den … Freya 002 VILLA TRAN… 1e verdie… Sectie 1 104
#> 2 211209… Verhofst… Guy 004 VILLA TRAN… 1e verdie… Sectie 1 102
#> 3 410630… Hanckeli… Laurette 005 VILLA TRAN… 1e verdie… Sectie 1 102
#> 4 251019… Smaak Antoinet… 007 VILLA TRAN… 1e verdie… Sectie 1 101
#> 5 281213… Areno Marie 008 VILLA TRAN… 1e verdie… Sectie 1 103
#> 6 190219… De Waen Patrick 010 VILLA TRAN… 2e verdie… Sectie 2 203
#> 7 271023… Vande Ma… Johan 012 VILLA TRAN… 2e verdie… Sectie 2 201
#> 8 311215… Dirupa Elise 014 VILLA TRAN… 2e verdie… Sectie 2 202
#> 9 320704… Zomers Bertha 015 VILLA TRAN… 2e verdie… Sectie 1 202
#> 10 100112… Daerdenne Micheline 019 VILLA TRAN… 2e verdie… Sectie 2 204
#> 11 461217… Schoeppe Antoine 021 VILLA TRAN… 1e verdie… Sectie 1 101
#> 12 201114… Vanrompu… Germain 022 VILLA TRAN… 2e verdie… Sectie 2 206
#> # … with 7 more variables: Location5 <chr>, Birthdate <chr>, DoctorName <chr>,
#> # DoctorMedRegNr <chr>, PatientUnidose <chr>, Shortstay <chr>, Products <chr>
由reprex package (v2.0.0) 創建於 2022-02-16
由於 Products 不能放入 Patients 表的列名中,因此可以將它們放在一列中:
read_xml("~/Downloads/00000123456_0000071234567123_20150922101212_TH.XML") %>%
xml_find_all("//Patient") %>%
as_list() %>%
map(~ {
.x %>%
enframe() %>%
filter(name != "Products") %>%
unnest_auto(value) %>%
pivot_wider() %>%
mutate(Products = list(.x$Products))
}) %>%
bind_rows()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.