我的数据集大约有数十万行(或大约100万个RDF三元组。)从表格的角度来看,每一行代表一个人参与某个过程。数据是嘈杂的,看起来是独立的个体实际上可能是同一个人。 根据规则,我需要权威地为每个在数据中建模的独特人员分配新的标识符,但我甚至不知道这种做法是否有名称。
我熟悉各种类型的聚类方法,但这对我来说似乎不同。我不知道真正的数字独特个体,我不想找到最小的个体他们之间的距离。我想找到符合我的合作者提供的一些规则的人。
例如,如果我有这些数据:
+-------------+-----+------------+--------+
| Transaction | ID | DOB | Gender |
+-------------+-----+------------+--------+
| 1 | 111 | 5/5/1969 | M |
| 2 | 112 | 6/6/1966 | F |
| 3 | 113 | 7/7/1970 | F |
| 4 | 113 | 9/9/1970 | F |
| 5 | 114 | 2/3/2000 | M |
| 6 | 114 | 2/4/2000 | F |
| 7 | 115 | 9/10/2001 | M |
| 8 | 115 | 11/11/2001 | F |
+-------------+-----+------------+--------+
这些详尽的规则
然后解决方案是
+-------------+-----+------------+--------+-----------------+-----------------------------------------------------+
| Transaction | ID | DOB | Gender | UniqueIdByRules | Notes |
+-------------+-----+------------+--------+-----------------+-----------------------------------------------------+
| 1 | 111 | 5/5/1969 | M | A | |
| 2 | 112 | 6/6/1966 | F | B | |
| 3 | 113 | 7/7/1970 | F | C | |
| 4 | 113 | 9/9/1970 | F | C | IDs identical, genders identical |
| 5 | 114 | 2/3/2000 | M | D | |
| 6 | 114 | 2/4/2000 | F | D | IDs identical, birthdates within one day of another |
| 7 | 115 | 9/10/2001 | M | E | |
| 8 | 115 | 11/11/2001 | F | F | |
+-------------+-----+------------+--------+-----------------+-----------------------------------------------------+
我的“最佳语言”是R,但我项目的核心语言是Scala。所以我对可以在R,Scala或Java中合理实现的解决方案特别感兴趣。原始数据以表格形式出现,但很早就转换为 RDF三元组我的过程,也许SWRL是相关的?我的一位合作者为这类问题随便提出了 PyCLIPS ,所以也许Jess或Drools是相关的?
答案 0 :(得分:0)
这称为“for循环”,带有“if statements”。
按ID对数据进行排序,迭代所有ID。如果有多个,请使用if
语句检查您的条件。