1

嗨,伙计们,这就是我想要完成的事情......

我的数据结构表1:

ID#| Capability.1 | Capability.2 | Capability.3| .... 37 total Capability.# columns 
97 | Crawl        | Walk         | Run         |
98 | Crawl        | null         | null        |
99 | Crawl        | Walk         | null        |

我的数据结构表2:

Capability | Vehicle1Score| Vehicle2Score| Vehicle3Score| 
Crawl      | 4            | 1            | 5            |
Walk       | 3            | 1            | 5            |
Run        | 2            | 0            | 0            |

如果 ID# 需要爬行、步行和跑步,我希望将车辆 1-3 的分数与他们爬行、步行和跑步的能力记录合并。例如:

ID#| Capability.1 | Capability.2 | Capability.3| Vehicle1CapaScore | Vehicle2CapaScore | Vehicle3CapaScore| 
97 | Crawl        | Walk         | Run         | 9 [4+3+2]         | 2 [1+1+0]         | 10 [5+5+0]       |
98 | Crawl        | null         | null        | 4 [4+null+null]   | 1 [1+null+null]   | 5 [5+null+null]  |
99 | Crawl        | Walk         | null        | 7 [4+3+null]      | 2 [1+1+null]      | 10 [5+5+null]    |

我已经使用合并查询(Table1[Capability.#] = Table2[Capability] 上的 LeftOuterJoin)为每个 Capability.# 列将 Table2 Capability 和 Vehicle Scores 带入 Table1(总共 37 个合并查询)。但是,我不知道如何将 37 个单独的合并查询求和并填充 Vehicle1CapaScore 列的分数。

如果有帮助,我可以在 SQL Server 中编写一个查询来演示我想要完成的工作;但是,我对 R 的熟练程度不足以做同样的事情。请让我知道这是否有意义,您可以提供帮助。

4

1 回答 1

2

我会 Unpivot 两个表,例如表 1:

  1. 选择 ID# 列
  2. 选择转换/取消透视列/取消透视其他列

我将在表 2 中重复这一点,选择 Capability 列。这将为您提供更多有用的数据结构,您可以一步合并。我会在结果上使用 Group By 来对表 2/车辆得分值求和。

我确定您的输出格式会有多有用,但如果这是您真正需要的,您可能可以使用 2 个枢轴步骤(在 Capability # 和 Vehicle # 上)从合并的结果中生成它。

于 2016-04-28T07:19:34.900 回答