我在 MS Excel 中有一个我称之为稀疏“交互矩阵”的数据,我希望将其转换为 Access 中的“三元关系”(表格)。
电子表格数据采用这种模式:
Name Act-1 Act-2 Act-3 ... Act-n
name-1 week
name-2 week
name-3 week week
: week
name-m week week
有n
作为 Excel 标题的活动,m
每个数据行第一列中的名称,以及在某人(姓名)进行活动的任何地方输入的零个或多个特定周。如果n
是小的和固定的,我可以将关系保持为矩阵,但n
可以变得非常大并且矩阵将非常稀疏。
因此,所需的关系表结构(我称之为分配)是这样的:
Assignment: Name, Activity, Week
Excel 或 Access 中是否有一个简单的工具来促进这种数据转换?
伪代码算法将是
for each Name (row)
for each Activity (column)
if Week, add Assignment: Name, Activity, Week
虽然我在 VBA 中编写代码(几年前),但我从未将它与 Excel 结合使用。我倾向于使用 Python 和 CSV 文件。也许有一个很好的 SQL 技术(即使不是特定于 Access 的)?或者它与“旋转”有关(我从来不明白那是什么)?
对于这种转换,您有什么想要分享的经验吗?
我的解决方案是将电子表格另存为制表符分隔的“矩阵”文件,运行以下“数据结构转换”程序,然后将生成的制表符分隔的“关系”文件导入 Access。
Python 3.4 代码: