gpt4 book ai didi

xml - 如何将XML中具有相同名称的多个节点转换为R中的df/list?

转载 作者:数据小太阳 更新时间:2023-10-29 02:45:13 26 4
gpt4 key购买 nike

这是我第一次使用 R 来体验 XML。所以我的问题可能听起来很天真,如果不是愚蠢的话......我以

的模式下载了一个 XML 文件
<experiment>
<sampleattribute>
<category>AGE</category>
<value>8</value>
<value>10</value>
<value>11</value>
</sampleattribute>
<sampleattribute>
<category>SEX</category>
<value>female</value>
<value>male</value>
</sampleattribute>
</experiment>
<experiment>
<sampleattribute>
<category>DESIGN</category>
<value>control</value>
<value>disease</value>
</sampleattribute>
</experiment>
<experiment>
<sampleattribute>
<category>AGE</category>
<value>8</value>
<value>10</value>
<value>11</value>
</sampleattribute>
<sampleattribute>
<category>SEX</category>
<value>female</value>
</sampleattribute>
<sampleattribute>
<category>DESIGN</category>
<value>control</value>
<value>disease</value>
</sampleattribute>
</experiment>

如您所见,每个实验节点都有不同的样本属性。我想以最终将转换为数据帧的方式连接每个实验中的所有样本属性。

我已经尝试过 attr<- xpathSApply(myxml, "//experiment/sampleattribute"),但无法追踪哪个实验具有哪些样本属性。

非常感谢您的任何建议。

最佳答案

您无法获得具有此类 XML 的 dataframe,而是一个列表。

使用 XML 包你可以这样做,例如:

doc = htmlParse(txt,asText=TRUE)

res = lapply(xpathSApply(doc,'//experiment'),
function(x){
category = xpathSApply(x,'sampleattribute/category',xmlValue)
values = xpathSApply(x,'sampleattribute/value',xmlValue)
list(category=category,
values =values)
})

然后你可以检查你的结果:

 str(res)
List of 3
$ :List of 2
..$ category: chr [1:2] "AGE" "SEX"
..$ values : chr [1:5] "8" "10" "11" "female" ...
$ :List of 2
..$ category: chr "DESIGN"
..$ values : chr [1:2] "control" "disease"
$ :List of 2
..$ category: chr [1:3] "AGE" "SEX" "DESIGN"
..$ values : chr [1:6] "8" "10" "11" "female" ..

关于xml - 如何将XML中具有相同名称的多个节点转换为R中的df/list?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22937424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com