我正在尝试从 Graphpad Prism .pzfx 文件导入原始数据,这些文件原则上是 .xml 文件。我去掉了大部分棱镜特定的东西,只留下了我感兴趣的部分。:
<?xml version="1.0" encoding="UTF-8"?>
<GraphPadPrismFile xmlns="http://graphpad.com/prism/Prism.htm" PrismXMLVersion="5.00">
<TableSequence Selected="1">
<Ref ID="Table0" Selected="1"/>
</TableSequence>
<Table ID="Table0" XFormat="error" YFormat="replicates" Replicates="1" TableType="XY" EVFormat="AsteriskAfterNumber">
<Title>Data 1</Title>
<XColumn Width="162" Decimals="0" Subcolumns="1">
<Title>X</Title>
<Subcolumn>
<d>1</d>
<d>2</d>
<d>3</d>
<d>4</d>
<d>5</d>
</Subcolumn>
</XColumn>
<YColumn Width="81" Decimals="4" Subcolumns="1">
<Title>ML</Title>
<Subcolumn>
<d>120</d>
<d>100</d>
<d>5</d>
<d>0</d>
<d>1.5</d>
</Subcolumn>
</YColumn>
<YColumn Width="81" Decimals="4" Subcolumns="1">
<Title>MH</Title>
<Subcolumn>
<d>10</d>
<d>560</d>
<d>665</d>
<d>40</d>
<d>31.5</d>
</Subcolumn>
</YColumn>
<YColumn Width="81" Decimals="6" Subcolumns="1">
<Title>MH2</Title>
<Subcolumn>
<d>1.20</d>
<d>100</d>
<d>5</d>
<d>0</d>
<d>1.5</d>
</Subcolumn>
</YColumn>
<YColumn Width="81" Decimals="6" Subcolumns="1">
<Title>MH1</Title>
<Subcolumn>
<d>120</d>
<d>100</d>
<d>5</d>
<d>0</d>
<d>1.5</d>
</Subcolumn>
</YColumn>
</Table>
</GraphPadPrismFile>
据我了解,我有一个节点表,它又具有 XColumn、YColumn 节点,这些节点具有标题,然后具有子列节点。这些包含我想转换成 R-data.frame 的原始数据。
到目前为止,我已经设法导入了一个 YColumn:(文件是上面那个的路径)
xData <- xmlParse(file)
xData.rt <- xmlRoot(xData)
xmlToDataFrame(xData.rt[["Table"]][["YColumn"]][["Subcolumn"]])
这给了我第一个 YColumn 作为 data.frame:
text
1 120
2 100
3 5
4 0
5 1.5
是否有一种(也许也更简单?)将所有 X 和 Y 列导入一个数据框的方法?
最佳答案
更新:该库也在 CRAN 上,可以通过以下方式安装:
install.packages("pzfx")
tl;dr:在研究了 pzfx 文件的 XML 结构后,我写了一个包 here和一篇博文 here .简而言之,
devtools::install_github("Yue-Jiang/pzfx")
library(pzfx)
pzfx_tables("/path/to/my/pzfx/file") # list tables in a .pzfx file
df <- read_pzfx("/path/to/my/pzfx/file", 1) # read first table
df <- read_pzfx("/path/to/my/pzfx/file", "Table Name") # read table by name
我在尝试解析 prsim XML 时注意到的几件事:
Prism 允许用户拥有子列,但它们可以表示不同的意思,这被指定为表格的 YFormat 属性。例如,replicates 表示子列是重复的,而 SDN 表示子列是均值、sd 和观察值。 pzfx 包尝试通过查看 YFormat 来推断子列类型,并将适当的后缀附加到列名称。
Prism 允许用户从表格中删除某些单元格。这是由子列的 Excluded 属性指定的。阅读该表时,需要决定如何处理这些排除的值。 pzfx 包允许用户保留、排除或保留 prsim 文件中的“*”(这使得所有列都是 character 类型)。
如果有人需要做类似的事情,希望这会有点用处。欢迎在 github 上报告问题。
关于xml - R 从 Graphpad Prism 导入 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25506099/
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
如何检查Ruby文件是否是通过“require”或“load”导入的,而不是简单地从命令行执行的?例如:foo.rb的内容:puts"Hello"bar.rb的内容require'foo'输出:$./foo.rbHello$./bar.rbHello基本上,我想调用bar.rb以不执行puts调用。 最佳答案 将foo.rb改为:if__FILE__==$0puts"Hello"end检查__FILE__-当前ruby文件的名称-与$0-正在运行的脚本的名称。 关于ruby-检查是否
我正在尝试创建一个与compass一起使用的本地配置文件,这样我们就可以处理开发人员机器上的不同导入路径。到目前为止,我已经尝试将文件导入到异常block中,以防它不存在,然后进一步使用该变量:local_config.rbVENV_FOLDER='venv'config.rbVENV_FOLDER='.'beginrequire'local_config.rb'rescueLoadErrorendputsVENV_FOLDER通常我是一名Python开发人员,所以我希望导入将VENV_FOLDER的值更改为venv,但它仍然是。之后。有没有一种方法可以导入local_config.r
我想禁用HTTP参数的自动XML解析。但我发现命令仅适用于Rails2.x,它们都不适用于3.0:config.action_controller.param_parsers.deleteMime::XML(application.rb)ActionController::Base.param_parsers.deleteMime::XMLRails3.0中的等价物是什么? 最佳答案 根据CVE-2013-0156的最新安全公告你可以将它用于Rails3.0。3.1和3.2ActionDispatch::ParamsParser::
我正在遍历数组中的一组标签名称,我想使用构建器打印每个标签名称,而不是求助于“我认为:builder=Nokogiri::XML::Builder.newdo|xml|fortagintagsxml.tag!tag,somevalendend会这样做,但它只是创建名称为“tag”的标签,并将标签变量作为元素的文本值。有人可以帮忙吗?这个看起来应该比较简单,我刚刚在搜索引擎上找不到答案。我可能没有以正确的方式提问。 最佳答案 尝试以下操作。如果我没记错的话,我添加了一个根节点,因为Nokogiri需要一个。builder=Nokogi
最好用一个例子来解释:文件1.rb:deffooputs123end文件2.rb:classArequire'file1'endA.new.foo将给出错误“':调用了私有(private)方法'foo'”。我可以通过执行A.new.send("foo")来解决这个问题,但是有没有办法公开导入的方法?编辑:澄清一下,我没有混淆include和require。另外,我不能使用正常包含的原因(正如许多人正确指出的那样)是因为这是元编程设置的一部分。我需要允许用户在运行时添加功能;例如,他可以说“run-this-app--includefile1.rb”,应用程序的行为将根据他在file1
尝试在我的Rails应用程序中导入CSV文件时,出现错误UTF-8中的无效字节序列。一切正常,直到我添加了一个gsub方法来将其中一个CSV列与我的数据库中的一个字段进行比较。当我导入CSV文件时,我想检查每一行的地址是否包含在特定客户端的不同地址数组中。我有一个带有alt_addresses属性的客户端模型,其中包含客户端地址的几种不同可能格式。然后我有一个引用模型(如果您熟悉本地SEO,您就会知道这个术语)。引用模型没有地址字段,但它有一个nap_correct?字段(NAP代表“姓名”、“地址”、“电话号码”)。如果CSV行的名称、地址和电话号码与我在该客户的数据库中拥有的相同,
这是一些奇怪的例子:#!/usr/bin/rubyrequire'rubygems'require'open-uri'require'nokogiri'print"withoutread:",Nokogiri(open('http://weblog.rubyonrails.org/')).class,"\n"print"withread:",Nokogiri(open('http://weblog.rubyonrails.org/').read).class,"\n"运行此返回:withoutread:Nokogiri::XML::Documentwithread:Nokogiri::
我正在尝试加载SAML协议(protocol)架构(具体来说:https://www.oasis-open.org/committees/download.php/3407/oasis-sstc-saml-schema-protocol-1.1.xsd),但在执行此操作之后:schema=Nokogiri::XML::Schema(File.read('saml11_schema.xsd'))我得到这个输出:Nokogiri::XML::SyntaxErrorException:Element'{http://www.w3.org/2001/XMLSchema}element',att
我在bitbucket上创建了一个私有(private)git存储库并提交了代码。现在我想导出所有(提交、代码、历史记录)并将其导入github上的gitrepo。有没有办法做到这一点?谢谢 最佳答案 在本地检查所有内容到您的计算机和gitpull。创建一个github存储库将此存储库添加为您的第二个远程(“使用gitremote添加githubURL”)推送到第二个Remote 关于ruby-git:从bitbucket导出并导入github(带提交),我们在StackOverflow