重塑数据框的正式 UML 表示

Formal UML representation of reshaping a data frame

用于数据重组的文档 table 从 "wide" 使用每个分数的 标准 列到使用 score 列和 criterion 专栏我的第一反应是使用 UML class 图。

我知道通过更改数据结构 table,class 属性没有改变。

我的第一个问题是宽版还是长版更正确地表示数据table?

我的第二个问题 是将两种表示联系起来是否有意义——如果是的话,是哪种关系?

我的第三个问题是除了 UML class 图之外的其他东西是否更适合 table 用于记录重塑(显示之前的数据预处理)在 R 中作为盒罐分发)。

您从 table 快速跳到了 UML。这使您的问题非常混乱,因为 table 的宽度表示为 class,反之亦然。

重新表述您的问题,看来您正在重构一些 table。宽 table 显示同一行中同一学生的多个值。这意味着最大练习数由table结构固定:

ID    Ex1  Ex2  Ex3 .... Ex N 
-----------------------------
111    A    A   A   ...   A
119    A    C   -   ...   D
127    B    F   B   ...   F

长table的列数较少,每行只显示1个特定学生的1个特定分数:

ID   #    Score 
---------------
111  1     A 
111  2     A
111  3     A   
          ...
111  N     A
119  1     A
119  2     C
          ...

您可以在 UML class 图中对此结构建模。但是在 UML 中,table 布局并不重要:这是 ORM 映射的问题,您可以完美地拥有一个 class 模型(具有多重性的属性或关联 1..N ) 可以使用宽版本或长版本来实现。如果多重性为 1..*,则只有长选项有效。

现在回答您的问题:

  1. 两种表述都正确;他们只是有不同的特点。 wide 是不灵活的,因为最大分数数由 table 结构固定。另外添加一个新的分数实际上需要更新一条记录(所以两个模型可能的并发是不一样的)。如果您想连续显示学生分数的历史记录,则使用 long 有点复杂。
  2. 是的,将两者联系起来很有意义,尤其是当您正在写作将第一个转换为第二个时。
  3. UML 不一定会在这里增加价值。如果您真的关心 table 和价值观,您也可以使用 Entity/Relationship 图表。但是 UML 具有 allowing database modelling as well and it lets you add behavioral aspects. If not now, then later. You could consider using the non-standard «table» stereotype 的优势,可以阐明您正在建模的内容 table(因此是您设计的低级视图)。