使用R,我正在尝试匹配按年份和城市构建的数据集中的人名。由于一些拼写错误,无法进行精确匹配,因此我尝试使用agrep()来模糊匹配名称。
数据集的样本块结构如下:
df
整洁的版本:
citycode year candidate
1 1200013 1996 AGUSTINHO FORTUNATO FILHO
2 1200013 1996 ANTONIO PEREIRA NETO
3 1200013 1996 FERNANDO JOSE DA COSTA
4 1200013 1996 PAULO CEZAR FERREIRA DE ARAUJO
5 1200013 2000 PAULO CESAR FERREIRA DE ARAUJO
6 1200013 2000 SEBASTIAO BOCALOM RODRIGUES
7 1200013 2004 JOAO DE ALMEIDA
8 1200013 2004 PAULO CESAR FERREIRA DE ARAUJO
我想分别检查每个城市,是否有候选人出现在几年内。例如。在示例中,
PAULO CEZAR FERREIRA DE ARAUJO
PAULO CESAR FERREIRA DE ARAUJO
出现两次(拼写错误)。应为整个数据集中的每个候选者分配唯一的数字候选ID。数据集相当大(5500个城市,大约100K条目),因此稍微有效的编码会有所帮助。有关如何实现这一点的任何建议吗?
编辑:这是我的尝试(在迄今为止的评论的帮助下),在实现手头的任务时非常缓慢(效率低下)。有关改进的建议吗?
f
levels(x)
x
}
temp
df$candidatenew
df$spellerror
编辑2:现在以良好的速度运行。问题在于每一步都与许多因素进行比较(感谢你指出这一点,Blue Magister)。将比较减少到只有一组中的候选者(即一个城市),在5秒内运行命令,持续80,000行 - 这是我可以忍受的速度。
df$candidate
f
matches
levels(x)
as.character(x)
}
temp
df$candidatenew
df$spellerror