使用RecordLinkage为每个人添加一个带有数字的列

时间:2015-03-05 18:07:34

标签: r

我想做一个我认为非常简单的操作 - 为每个人添加一个带有编号的列到具有(可能)重复名称列表的数据集。我认为我很亲密。此代码查看名称的数据集,进行成对比较,并附加列是否存在可能的匹配。现在我只想更进一步 - 我想提出一个唯一的标识符,而不是删除重复项。

彼得


示例:

彼得

彼得

彼得

康纳

马特

会变成

示例:

彼得 - 1

彼得 - 1

彼得 - 1

Connor - 2

马特 - 3

library(RecordLinkage)
data(RLdata10000)
rpairs <- compare.dedup(RLdata10000, blockfld = 5)
p=epiWeights(rpairs)
classify <- epiClassify(p,0.7)
summary(classify)
match <- classify$prediction
results <- cbind(classify$pairs,match)

2 个答案:

答案 0 :(得分:5)

小重写,避免必须使用ID调整权重和分类器

genre = [release['genre'] for release in context_dict['release']]

答案 1 :(得分:2)

我找到了自己问题的答案。

df_names <- df_names %>% mutate(ID = 1:nrow(df_names))
rpairs <- compare.dedup(df_names)
p=epiWeights(rpairs)
classify <- epiClassify(p,0.83)
summary(classify)
matches <- getPairs(classify, show = "links", single.rows = TRUE)

此代码会写一个“ID”列,对于类似名称

是相同的
matches <- matches %>% arrange(ID.1) %>% filter(!duplicated(ID.2))
df_names$ID_prior <- df_names$ID

将匹配信息与原始数据合并

df_names <- left_join(df_names, matches %>% select(ID.1,ID.2), by=c("ID"="ID.2"))

将ID中的匹配项与ID.1

中的匹配项替换
df_names$ID <- ifelse(is.na(df_names$ID.1), df_names$ID, df_names$ID.1)