如何在R中表示父子数据?

时间:2013-10-18 11:26:04

标签: r dataset

我想将一些数据导入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>

1 个答案:

答案 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中非常灵活地分析。