2011-09-03 67 views
2

有誰能告訴我我在做什麼錯在這裏。我想測試將R包RecordLinkage的比較功能上的玩具集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爲三對。

感謝

+0

將在原始數據中指定'is_match'以顯示一對實際匹配。 'RecordLinkage'包主要用於測試連接算法,本專欄允許評估基準數據的算法。 –

+1

謝謝理查德 - 我現在明白了。 - 但是,例如,如果我輸入頭(RLdata500),我沒有看到身份欄 - 它在哪裏? –

+0

對於任何人來說,像我這樣的人都會遇到這樣的問題:在R中鍵入「help(RLdata500)」。它解釋了identity.RLdata500是一個分離定義的向量,它包含唯一的ID。 –

回答

1

,因爲你忘了使用一個身份索引:

> 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 
+0

但身份是可選的 - 也是你的例子仍然不表示記錄1和3是匹配 –

+0

別擔心 - 我已經這樣做了 - 身份是監督培訓 –

+0

@RossFarrelly你是如何解決這個問題的?我有同樣的問題......'is_match'只會導致'NAs' – sdaza

0

對於任何人,誰絆倒翻過像我這樣的問題:類型

help(RLdata500) 

在R.它解釋說, identity.RLdata500是一個單獨定義的向量,它保存唯一的ID。

我認爲,這是定義separatly,否則,該數據將通過一些功能自動使用,除非他們將被明確告知,要不要這樣......

看到的,這行是重複的,請在R中的以下內容:

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

請注意,我是R的初學者 - 因此可能會有更優雅的方式顯示重複的數據記錄。 (如果有人知道某種方式,爲了顯示組合矩陣「我」的這一行,我想聽聽它。) –

0

我面臨着同樣的問題,我對這個答案這是由於身份參數的可能的解決方案。

從樣本數據,在記錄鏈接包,我發現這個矢量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