我正在使用R包RecordLinkage中的compare.linkage函数,
得到的结果我知道是错误的,所以我知道我误解了一些东西。
我正在使用适用于 x64 Windows 的 R 3.2.3。我对 Stata 非常熟悉,但对 R 不太熟悉。我只是在 r-help 上交叉发帖。
我可以从阻止字段创建记录对,但所有对都是未知状态 (NA)。我无法创建匹配或不匹配。我想要一个简单的工作示例,说明如何使用 RecordLinkage 包链接数据集。看来手册和 R Journal Vol. 2/2 仅展示如何使用compare.dedup 函数对单个数据集进行重复数据删除,而不是如何使用compare.linkage 函数将两个数据集链接在一起。我可以重现 R Journal 文章中的示例,因此我的 R 安装没问题。
手册中的示例数据集对 7 个变量有 500 和 10000 个观测值,但 1 个观测值和 2 个变量就足以显示问题。
我的第一个比较模式如下所示:
id1 id2 fname_c1 bm is_match
1 17 343 1 1 NA
相反,我想要并期望一个如下所示的比较模式:
id1 id2 fname_c1 bm is_match
1 17 343 1 1 1
我的阻塞变量是 fname_c1,代表名字的第一个组成部分。我的匹配变量是 bm 代表出生月份。我的理解是,示例输出中的第 1 行是 fname_c1 在基础数据集中匹配的第一行。当两个链接数据集中的匹配变量 bm=1 时,我希望并期望 is_match 为 1,如示例中所示。
有关更多详细信息,这是我输入的内容和 R 输出:
> library(RecordLinkage)
> data(RLdata500)
> data(RLdata10000)
> RLdata500[17, ]
fname_c1 fname_c2 lname_c1 lname_c2 by bm bd
17 ALEXANDER <NA> MUELLER <NA> 1974 9 9
> RLdata10000[343, ]
fname_c1 fname_c2 lname_c1 lname_c2 by bm bd
343 ALEXANDER <NA> BAUMANN <NA> 1957 9 7
> rpairs <- compare.linkage(RLdata500,RLdata10000,blockfld=c(1), exclude=c(2:5,7))
> rpairs$pairs[c(1:2), ] # Why is_match=NA? (should be 1)
id1 id2 fname_c1 bm is_match
1 17 343 1 1 NA
2 17 2385 1 0 NA
> rpairs <- epiWeights(rpairs) # (Weight calculation)
> summary(rpairs) # (0 matches in Linkage Dataset)
Linkage Data Set
500 records in data set 1
10000 records in data set 2
47890 record pairs
0 matches
0 non-matches
47890 pairs with unknown status
Weight distribution:
[omitted here to save space]
参考:
“RecordLinkage”包手册
(可在线获取 PDF 版本,网址为https://cran.r-project.org/web/packages/RecordLinkage/RecordLinkage.pdf)
R 期刊文章文章“RecordLinkage 包:检测数据中的错误”
(可在线获取 PDF 版本,网址为https://journal.r-project.org/archive/2010-2/RJournal_2010-2_Sariyar+Borg.pdf)
我在手册和 R 期刊文章中看到了一些关于真实匹配结果的恒等论证的内容,但我想我只需要它作为参考(“黄金标准”)数据集。对于我的示例,两个基础数据集中都有一个非缺失值 (bm=1),因此这并不是结果为 NA 的原因。我缺少什么?如何使用 R 中的 Compare.linkage 链接两个简单的数据集?
安德斯·亚历山大森
[电子邮件受保护]