如何使用 R 的 RecordLinkage 包查找记录匹配项?
How to Find Record Matches Using R's RecordLinkage package?
我对数据 link 总体而言相对较新,尤其是 R RecordLinkage package。我有如下数据:
require(RecordLinkage)
library(RCurl)
dss_member <- read.csv(text = getURL("https://raw.githubusercontent.com/kilimba/data/master/dss_member.csv"),
stringsAsFactors = F)
dss_member$id <- NULL
patient <- read.csv(text = getURL("https://raw.githubusercontent.com/kilimba/data/master/patient.csv"),
stringsAsFactors = F)
patient$id <- NULL
rpairs <- compare.linkage(patient,dss_member)
rpairs$pairs
rpairs <- epiWeights(rpairs)
summary(rpairs)
如您所见,我有两个数据框,dss_member
(11 行)和patient
(5 行)。我在两者中都插入了一行,理论上 应该 肯定是 link,用户 James Earl Jones。但是我有两个问题。
行 rpairs$pairs
导致输出的最后一列 is_match
始终显示为 NA,即使我确信两个数据集中至少有一行是相同的。这是什么意思?这与尚未回答的another SO question有关。
行
rpairs <- epiWeights(rpairs)
summary(rpairs)
结果如下:
Linkage Data Set
5 records in data set 1
11 records in data set 2
55 record pairs
0 matches
0 non-matches
55 pairs with unknown status
Weight distribution:
[0,0.2] (0.2,0.4] (0.4,0.6] (0.6,0.8] (0.8,1]
47 1 3 2 2
(a) 为什么它显示 0 个匹配项和 0 个不匹配项,而至少 肯定 匹配项 (James Earl Jones)
(b)函数compare.linkage()
中的identity
参数是可选的吗?如果是这样,当你把它放在外面和放在里面时会发生什么?
(c) 即使没有 "Gold Standard" 也可以使用这个包来执行记录 linkage,而 不 记录 link年龄评价?
亲切的问候,
图迈尼
图迈尼,
您需要区分真实状态(假或真)和分类(非link、可能或link)。请参阅作者在 R Journal 2/2 (2010) 中的文章、软件包手册以及作者在此处的回复:R RecordLinkage Identity .
直接回答您的问题:
(a) 输出显示“0 个匹配”和“0 个不匹配”,因为您在 compare.linkage() 中省略了 identity1 和 identity2 参数。
(b) 是的,compare.linkage() 中的 identity1 和 identity2 参数是可选的。如果您省略身份参数,那么您将忽略真正的匹配状态。如果您正确指定身份参数,则会使用真正的匹配状态。
(c) 我不确定您所说的 "record linkage" 与 "record linkage evaluation" 是什么意思。 Record linkage可以理解为一个分类问题,以比较模式为输入,匹配状态为输出。
这里有一个您可能想尝试的四步解决方案:
1) 运行 compare.linkage 没有 身份参数。
2) 从记录对中创建两个身份 变量。
3) 将两个恒等式变量转换为恒等式vectors.
4) 运行 compare.linkage 再次 with 身份参数。
安德斯·亚历山大森
andersalex@gmail.com
我对数据 link 总体而言相对较新,尤其是 R RecordLinkage package。我有如下数据:
require(RecordLinkage)
library(RCurl)
dss_member <- read.csv(text = getURL("https://raw.githubusercontent.com/kilimba/data/master/dss_member.csv"),
stringsAsFactors = F)
dss_member$id <- NULL
patient <- read.csv(text = getURL("https://raw.githubusercontent.com/kilimba/data/master/patient.csv"),
stringsAsFactors = F)
patient$id <- NULL
rpairs <- compare.linkage(patient,dss_member)
rpairs$pairs
rpairs <- epiWeights(rpairs)
summary(rpairs)
如您所见,我有两个数据框,dss_member
(11 行)和patient
(5 行)。我在两者中都插入了一行,理论上 应该 肯定是 link,用户 James Earl Jones。但是我有两个问题。
行
rpairs$pairs
导致输出的最后一列is_match
始终显示为 NA,即使我确信两个数据集中至少有一行是相同的。这是什么意思?这与尚未回答的another SO question有关。行
rpairs <- epiWeights(rpairs)
summary(rpairs)
结果如下:
Linkage Data Set
5 records in data set 1
11 records in data set 2
55 record pairs
0 matches
0 non-matches
55 pairs with unknown status
Weight distribution:
[0,0.2] (0.2,0.4] (0.4,0.6] (0.6,0.8] (0.8,1]
47 1 3 2 2
(a) 为什么它显示 0 个匹配项和 0 个不匹配项,而至少 肯定 匹配项 (James Earl Jones)
(b)函数compare.linkage()
中的identity
参数是可选的吗?如果是这样,当你把它放在外面和放在里面时会发生什么?
(c) 即使没有 "Gold Standard" 也可以使用这个包来执行记录 linkage,而 不 记录 link年龄评价?
亲切的问候, 图迈尼
图迈尼,
您需要区分真实状态(假或真)和分类(非link、可能或link)。请参阅作者在 R Journal 2/2 (2010) 中的文章、软件包手册以及作者在此处的回复:R RecordLinkage Identity .
直接回答您的问题:
(a) 输出显示“0 个匹配”和“0 个不匹配”,因为您在 compare.linkage() 中省略了 identity1 和 identity2 参数。
(b) 是的,compare.linkage() 中的 identity1 和 identity2 参数是可选的。如果您省略身份参数,那么您将忽略真正的匹配状态。如果您正确指定身份参数,则会使用真正的匹配状态。
(c) 我不确定您所说的 "record linkage" 与 "record linkage evaluation" 是什么意思。 Record linkage可以理解为一个分类问题,以比较模式为输入,匹配状态为输出。
这里有一个您可能想尝试的四步解决方案:
1) 运行 compare.linkage 没有 身份参数。
2) 从记录对中创建两个身份 变量。
3) 将两个恒等式变量转换为恒等式vectors.
4) 运行 compare.linkage 再次 with 身份参数。
安德斯·亚历山大森 andersalex@gmail.com