4

谁能告诉我我在这里做错了什么。我正在尝试在玩具数据集上测试 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。

4

3 回答 3

2

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

> 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
于 2011-09-03T18:07:33.397 回答
1

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

help(RLdata500)

在 R 中。它解释了 identity.RLdata500 是一个单独定义的向量,它包含唯一的 ID。

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

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

i=cbind(RLdata500,identity.RLdata500)
L = i[8] == 33
i[L,]
于 2017-09-24T15:29:05.610 回答
1

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

从样本数据中,在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
于 2017-10-24T15:32:30.593 回答