Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用RecordLink为每个人添加带有数字的列_R - Fatal编程技术网

使用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)