我想将一些数据导入R,并想知道如何构建它。我之前使用过R,但我仍处于初级阶段。
数据代表典型的一对多关系,并以XML格式提供。为了不让你围绕我实际数据的复杂现实,让我们使用臭名昭着的订单 - > OrderItem示例。我的XML文件包含一系列订单,除了一些简单类型元素外,每个订单还包含一个OrderItem集合,每个订单项都有自己的简单类型元素。
我想我可以制作两个数据框,关系式,一个用于订单,一个用于订单商品。或者我可以尝试制作订单数据框,并以某种方式将订单商品的迷你数据框打入每个订单项。或者也许尝试定义自己的对象?我从未在R做过任何OO。
我认为在R中有一种“正确”的方式,并且它的内置工具可以很容易地使用这三种结构中的一种。但我不知道它是哪一个。或者这是我还没有想到的第四种方法?我该选哪个?
我已经查看了用于导入XML的包的文档。他们解释了使用哪些方法来获取某些节点的数据,但没有采取任何措施来回答我的问题。示例总是包含平面数据。
数据分析肯定会包含需要Orders和OrderItems关系的问题。例如,“有些物品在星期一比在星期日更频繁地订购”。
这是数据当前状态的最小工作示例:
<?xml version="1.0"?>
<orders>
<order>
<orderDate>01.01.1850</orderDate>
<customerName>Jules Verne</customerName>
<orderItems>
<orderItem>
<itemName>miniature steam machine</itemName>
<quantity>2</quantity>
<price>30 guineas</price>
<comment>British import</comment>
</orderItem>
<orderItem>
<itemName>map of Siberia</itemName>
<quantity>1</quantity>
<price>50 sous</price>
</orderItem>
</orderItems>
</order>
<order>
<orderDate>01.06.1970</orderDate>
<customerName>Arthur Clarke</customerName>
<orderItems>
<orderItem>
<itemName>Meccano set "spaceship"</itemName>
<quantity>1</quantity>
<price>50 dollars</price>
</orderItem>
</orderItems>
</order>
</orders>
答案 0 :(得分:1)
如果您使用回归分析对此数据进行建模,则可以考虑混合效果(多级/分层线性)模型。在这种情况下,甚至在R中的其他分析情况下,不要考虑存储效率。为每个actor i 的每个 k 项创建一个数据框。因此,每个订单都会有一行。该行中的其他字段将捕获演员或订单的协变量。代表演员特征的那些将重复 k 次,除非这些特征在订单之间发生变化。这种变化是可以接受的,只要你认识到它是演员的变化,而不是订购项目的特征(尽管两者可能是相关的!所以是的,这是模糊的区别)。
演员1购买3件A,B和C以及演员2购买1件B的例子。演员的年龄和物品的成本也包括在内:
df <- data.frame( i=c(1,1,1,2), item=c("A","B","C","B"), itemCost=c(12,4,7,4), iage=c(23,23,23,47) )
df
# i item itemCost iage
#1 1 A 12 23
#2 1 B 4 23
#3 1 C 7 23
#4 2 B 4 47
这种结构在R中非常灵活地分析。