使用RecordLink为每个人添加带有数字的列
我想做一个我认为非常简单的操作——向数据集中添加一列,每个人都有一个数字,数据集中有一个(可能)重复的名字列表。我想我很接近。这段代码查看名称数据集,进行两两比较,并附加一列以确定是否存在可能的匹配。现在,我只想更进一步——我不想删除重复项,而是想找到一个唯一的标识符 彼得使用RecordLink为每个人添加带有数字的列,r,R,我想做一个我认为非常简单的操作——向数据集中添加一列,每个人都有一个数字,数据集中有一个(可能)重复的名字列表。我想我很接近。这段代码查看名称数据集,进行两两比较,并附加一列以确定是否存在可能的匹配。现在,我只想更进一步——我不想删除重复项,而是想找到一个唯一的标识符 彼得 例如: 彼得 彼得 彼得 康纳 马特 将成为 例如: 彼得——1 彼得——1 彼得——1 康纳-2 马特-3 库(记录链接) 数据(RLdata10000) rpairs我找到了自己问题的答案 df_names <-
例如: 彼得 彼得 彼得 康纳 马特 将成为 例如: 彼得——1 彼得——1 彼得——1 康纳-2 马特-3
库(记录链接)
数据(RLdata10000)
rpairs我找到了自己问题的答案
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)
df_名称%变异(ID=1:nrow(df_名称))
rpairs小重写,避免权重和分类器必须与IDs一起调整
df_names <- data.frame(Name=c("Peter","Peter","Peter","Connor","Matt"))
df_names %>% compare.dedup() %>%
epiWeights() %>%
epiClassify(0.3) %>%
getPairs(show = "links", single.rows = TRUE) -> matches
left_join(mutate(df_names,ID = 1:nrow(df_names)),
select(matches,id1,id2) %>% arrange(id1) %>% filter(!duplicated(id2)),
by=c("ID"="id2")) %>%
mutate(ID = ifelse(is.na(id1), ID, id1) ) %>%
select(-id1)
df_名称%compare.dedup()%%>%
epiWeights()%>%
表分类(0.3)%>%
getPairs(show=“links”,single.rows=TRUE)->匹配
左联合(变异(df_名称,ID=1:nrow(df_名称)),
选择(匹配项,id1,id2)%%>%arrange(id1)%%>%filter(!duplicated(id2)),
by=c(“ID”=“id2”))%>%
突变(ID=ifelse(is.na(id1),ID,id1))%>%
选择(-id1)
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"))
df_names$ID <- ifelse(is.na(df_names$ID.1), df_names$ID, df_names$ID.1)
df_names <- data.frame(Name=c("Peter","Peter","Peter","Connor","Matt"))
df_names %>% compare.dedup() %>%
epiWeights() %>%
epiClassify(0.3) %>%
getPairs(show = "links", single.rows = TRUE) -> matches
left_join(mutate(df_names,ID = 1:nrow(df_names)),
select(matches,id1,id2) %>% arrange(id1) %>% filter(!duplicated(id2)),
by=c("ID"="id2")) %>%
mutate(ID = ifelse(is.na(id1), ID, id1) ) %>%
select(-id1)