我有一个包含犯罪实例的数据集,每个实例都有一个位置 (wardId)、犯罪类型 (Primary.Type) 和日期。最终目标是将其转变为以 Primary.Type 作为节点的网络,其边的权重取决于它们共享 Primary.Type 和 Ward.Date 的独特组合的次数(两种类型的犯罪发生在当天同一个病房是一个连接,这个组合当天发生的次数决定权重)。
在 Ward.Date 上合并后,wardId 和 Date我有一个包含 Ward.Date('wardId yyyy-mm-dd')、Primary.Type.x('string')、Primary.Type.y('string')的edgelist,重量(数字)。Primary.Types 源自合并重复表以创建边缘列表,因此存在反向重复。
病房日期 | 主要类型.x | 主要类型.y | 重量 |
---|---|---|---|
1 2017-01-03 | 盗窃 | 抢劫 | 1 |
1 2017-01-03 | 抢劫 | 盗窃 | 1 |
2 2017-01-05 | 电池 | 入室盗窃 | 2 |
2 2017-01-05 | 入室盗窃 | 电池 | 2 |
在一些帮助下(使用 R 删除反向重复)我设法删除了 Primary.Type.x 和 Primary.Type.y 的反向重复值,它们具有相同的 Ward.Date 值:
test <- edgelist.primary.wards[!duplicated(lapply(as.data.frame(t(edgelist.primary.wards),
stringsAsFactors=FALSE), sort)),]
但是需要注意的是,结果表也删除了反向对的权重,而此计数未汇总到保留的对的权重中:
病房日期 | 主要类型.x | 主要类型.y | 重量 |
---|---|---|---|
1 2017-01-03 | 盗窃 | 抢劫 | 1 |
2 2017-01-05 | 入室盗窃 | 电池 | 2 |
相反,目标输出应该是:
病房日期 | 主要类型.x | 主要类型.y | 重量 |
---|---|---|---|
1 2017-01-03 | 盗窃 | 抢劫 | 2 |
2 2017-01-05 | 入室盗窃 | 电池 | 4 |
期待看到您的建议!