简体   繁体   English

将 List 和 Dataframe 转换为 DATAFRAME

[英]Transform List and Dataframe to a DATAFRAME

I have a DF called " billing ".我有一个叫做“ billing ”的 DF。

<?xml version="1.0" encoding="ISO-8859-1" ?>


<test:TASS xmlns="http://www.vvv.com/schemas"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://www.vvv.com/schemas http://www.vvv.com/schemas/testV2_02_03.xsd"  xmlns:test="http://www.vvv.com/schemas" >
    <test:house>
                <test:billing>
                    <test:proceduresummary>
                        <test:guidenumber>X2030</test:guidenumber>
                            <test:diagnosis>
                                <test:table>ICD-10</test:table>
                                <test:diagnosiscod>J441</test:diagnosiscod>
                                <test:description>CHRONIC OBSTRUCTIVE PULMONARY DISEASE WITH (ACUTE) EXACERBATION</test:description>
                            </test:diagnosis>
                            <test:procedure>
                                <test:procedure>
                                    <test:description>HOSPITAL</test:description>
                                </test:procedure>
                                <test:amount>12</test:amount>
                            </test:procedure>
                    </test:proceduresummary>
                </test:billing>
                    <test:billing>
                    <test:proceduresummary>
                        <test:guidenumber>Y6055</test:guidenumber>
                            <test:diagnosis>
                                <test:table>ICD-10</test:table>
                                <test:diagnosiscod>I21</test:diagnosiscod>
                                <test:description>ACUTE MYOCARDIAL INFARCTION</test:description>
                            </test:diagnosis>
                            <test:procedure>
                                <test:procedure>
                                    <test:description>HOSPITAL</test:description>
                                </test:procedure>
                                <test:amount>8</test:amount>
                            </test:procedure>
                    </test:proceduresummary>
                </test:billing>
                    <test:billing>
                    <test:proceduresummary>
                        <test:guidenumber>Z9088</test:guidenumber>
                            <test:diagnosis>
                                <test:table>ICD-10</test:table>
                                <test:diagnosiscod>F20</test:diagnosiscod>
                                <test:description>SCHIZOPHRENIA</test:description>
                            </test:diagnosis>
                            <test:procedure>
                                <test:procedure>
                                    <test:description>HOSPITAL</test:description>
                                </test:procedure>
                                <test:amount>1</test:amount>
                            </test:procedure>
                    </test:proceduresummary>
                </test:billing>
    </test:house>
</test:TASS>

My code:我的代码:

require(tidyverse)
require(xml2)
setwd("D:/")
page<- read_xml("base.xml")

To dataframe:到数据框:

ns<- page %>% xml_find_all(".//test:billing")
billing<-xml2::as_list(ns) %>% jsonlite::toJSON() %>% jsonlite::fromJSON()

See example: for each variable there are other variables (list or dataframe).请参见示例:对于每个变量,还有其他变量(列表或数据框)。 I would like to transform these subvariables into standard variables (integer, character, ...) and build a DF without these hidden variables (list and dataframe).我想将这些子变量转换为标准变量(整数、字符等)并构建一个没有这些隐藏变量(列表和数据框)的 DF。 It is possible?有可能的?

在此处输入图片说明

DF should look like this. DF应该是这样的。

guidenumber<- c('X2030','Y6055','Z9088')
table<- c('ICD-10','ICD-10','ICD-10')
diagnosiscod<- c('J441','I21','F20')
description<- c('CHRONIC OBSTRUCTIVE PULMONARY DISEASE WITH (ACUTE) EXACERBATION','ACUTE MYOCARDIAL INFARCTION','SCHIZOPHRENIA')
procedure<- c('HOSPITAL','HOSPITAL','HOSPITAL')
amount<- c(12,8,1)
DF<- data.frame(guidenumber,table,diagnosiscod,description,procedure,amount)

Here is one way to do it:这是一种方法:

require(xml2)

page = read_xml("base.xml")

guidenumber  = unlist(as_list(xml_find_all(page, ".//test:guidenumber")))
table        = unlist(as_list(xml_find_all(page, ".//test:table")))
diagnosiscod = unlist(as_list(xml_find_all(page, ".//test:diagnosiscod")))
description  = unlist(as_list(xml_find_all(page, ".//test:diagnosis//test:description")))
procedure    = unlist(as_list(xml_find_all(page, ".//test:procedure//test:description")))
amount       = unlist(as_list(xml_find_all(page, ".//test:amount")))

DF = data.frame(guidenumber,table,diagnosiscod,description,procedure,amount)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM