如何使用 R 的 RecordLinkage 包获取匹配对

发布于 2024-12-02 22:30:15 字数 448 浏览 0 评论 0原文

谁能告诉我我在这里做错了什么。我正在尝试在玩具数据集上测试 R 包 RecordLinkage 的比较函数,

> test<-cbind(
+ a = c(1, 1, 1), 
+ b = c(2, 0, 2), 
+ c = c(1, 2, 1))
> 
> test
     a b c
[1,] 1 2 1
[2,] 1 0 2
[3,] 1 2 1
> 
> results <- compare.dedup(test)
> 
> results$pairs
  id1 id2 a b c is_match
1   1   2 1 0 0       NA
2   1   3 1 1 1       NA
3   2   3 1 0 0       NA
> 

记录 1 和记录 3 明显匹配,但 is_match 对于所有三对来说都是 NA。

Can anyone tell me what I'm doing wrong here. I am trying to test the R package RecordLinkage's compare function on a toy dataset

> test<-cbind(
+ a = c(1, 1, 1), 
+ b = c(2, 0, 2), 
+ c = c(1, 2, 1))
> 
> test
     a b c
[1,] 1 2 1
[2,] 1 0 2
[3,] 1 2 1
> 
> results <- compare.dedup(test)
> 
> results$pairs
  id1 id2 a b c is_match
1   1   2 1 0 0       NA
2   1   3 1 1 1       NA
3   2   3 1 0 0       NA
> 

Records 1 and 3 clearly match but is_match is NA for all three pairs.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

终弃我 2024-12-09 22:30:15

因为你忘记使用身份索引:

> compare.dedup(cbind(a=c(1,1,1), b=c(2,0,2), c=c(1,2,1)), identity=c(1,2,3))$pair
id1 id2 a b c is_match
1   1   2 1 0 0        0
2   1   3 1 1 1        0
3   2   3 1 0 0        0

because you forgot to use a identity index:

> compare.dedup(cbind(a=c(1,1,1), b=c(2,0,2), c=c(1,2,1)), identity=c(1,2,3))$pair
id1 id2 a b c is_match
1   1   2 1 0 0        0
2   1   3 1 1 1        0
3   2   3 1 0 0        0
笑,眼淚并存 2024-12-09 22:30:15

对于像我一样偶然遇到这个问题的任何人:输入

help(RLdata500)

R。它解释了 Identity.RLdata500 是一个单独定义的向量,它保存唯一的 ID。

我认为,它是单独定义的,因为否则,数据将被某些函数自动使用,除非明确告诉它们不要这样做......

要查看哪些行是重复的,请在 R 中键入以下内容:

i=cbind(RLdata500,identity.RLdata500)
L = i[8] == 33
i[L,]

For anyone, who stumbles accross this question like me: type

help(RLdata500)

in R. It explains that identity.RLdata500 is a separatly defined vector, that holds the unique ID's.

I think, it is define separatly, because otherwise, the data would be used by some of the functions automatically, unless they would be explicitly told, to do not so...

To see, which rows are duplicates, type the following in R:

i=cbind(RLdata500,identity.RLdata500)
L = i[8] == 33
i[L,]
妥活 2024-12-09 22:30:15

我遇到了同样的问题,并且我有这个答案的可能解决方案这是由于身份参数。

从样本数据中,在Record Linkage包中,我发现这个向量identity.RLdata500携带了关于RLdata500的重复记录的信息,在500条记录中,50条是

length(unique(identity.RLdata500))
[1] 450

我发现的 重复记录我的数据集中的相似列并存储为单独的向量并将向量传递给身份参数

New_data_seq
118
118

New_data_seq <- R_New_data_zero$SEQ_NO 
abc <- compare.dedup (R_New_data_zero,identity = New_data_seq) 

BICODE ALCODE IS_T OID conc
 I      A     1    99   IA1
 I      A     1    99   IA1
abc$pairs[1:1, ]

id1 id2 BICODE ALCODE IS_T OID conc is_match
 1   2   1        1    1    1    1       1

I faced the same issue and I have the possible solution for this answer This is due to identity parameter.

from the sample data, in Record Linkage package, I found that this vector identity.RLdata500 carry information about the duplicate records of RLdata500 out of 500 records 50 are duplicate records

length(unique(identity.RLdata500))
[1] 450

I found the similar column in my dataset and stored as a separate vector and passed the vector to the identity parameter

New_data_seq
118
118

New_data_seq <- R_New_data_zero$SEQ_NO 
abc <- compare.dedup (R_New_data_zero,identity = New_data_seq) 

BICODE ALCODE IS_T OID conc
 I      A     1    99   IA1
 I      A     1    99   IA1
abc$pairs[1:1, ]

id1 id2 BICODE ALCODE IS_T OID conc is_match
 1   2   1        1    1    1    1       1
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文