我想做一个我认为非常简单的操作 - 为每个人添加一个带有编号的列到具有(可能)重复名称列表的数据集。我认为我很亲密。此代码查看名称的数据集,进行成对比较,并附加列是否存在可能的匹配。现在我只想更进一步 - 我想提出一个唯一的标识符,而不是删除重复项。
彼得
示例:
彼得
彼得
彼得
康纳
马特
会变成
示例:
彼得 - 1 彼得 - 1 彼得 - 1Connor - 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)
答案 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)