【问题标题】:Using RecordLinkage to add a column with a number for each person使用 RecordLinkage 为每个人添加一个带有数字的列
【发布时间】:2015-09-19 06:58:43
【问题描述】:

我想做一个我认为非常简单的操作——将一个包含每个人的数字的列添加到一个包含(可能)重复名称列表的数据集中。我认为我很接近。此代码查看名称数据集,进行成对比较,并附加一列是否可能匹配。现在我只想更进一步——我不想删除重复项,而是想出一个唯一标识符。

彼得


例子:

彼得

彼得

彼得

康纳

马特

会变成

例子:

彼得 -- 1

彼得 -- 1

彼得 -- 1

康纳——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)

【问题讨论】:

    标签: r


    【解决方案1】:

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

    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)
    

    【讨论】:

      【解决方案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) 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-01
        • 1970-01-01
        • 2018-10-28
        • 1970-01-01
        • 2021-02-12
        • 1970-01-01
        • 2015-07-18
        • 1970-01-01
        相关资源
        最近更新 更多