RecordLinkageパッケージを使用して一意のID列を生成しようとしています。小さなデータセット(< = 1,000,000)で作業しているときにはうまくいきましたが、パッケージ内で異なる機能を使用する大きなデータセット(> 1,000,000)に対してこの結果を再現できませんでした。私はレコードにいくつかのエラー(ほぼ一致)または重複があるかもしれないという事実にもかかわらず、一意のIDを生成したい複数の識別子変数が与えられています。識別子のいくつかのデータフレームが与えられるRecordLinkageパッケージで大きなデータセットの一意のID列を生成
:
data(RLdata500)
df_identifiers <- RLdata500
これは小さいdatesets(ワーク)のためのコードである:
df_identifiers <- df_identifiers %>% mutate(ID = 1:nrow(df_identifiers))
rpairs <- compare.dedup(df_identifiers)
p=epiWeights(rpairs)
classify <- epiClassify(p,0.3)
matches <- getPairs(object = classify, show = "links", single.rows = TRUE)
# this code writes an "ID" column that is the same for similar identifiers
classify <- matches %>% arrange(ID.1) %>% filter(!duplicated(ID.2))
df_identifiers$ID_prior <- df_identifiers$ID
# merge matching information with the original data
df_identifiers <- left_join(df_identifiers, matches %>% select(ID.1,ID.2), by=c("ID"="ID.2"))
# replace matches in ID with the thing they match with from ID.1
df_identifiers$ID <- ifelse(is.na(df_identifiers$ID.1), df_identifiers$ID, df_identifiers$ID.1)
このアプローチはhere議論されています。しかし、このコードは、他の関数を使用しているときに大きなデータセットに適用された場合には拡張可能ではないようです。例えば、compare.dedup
のビッグデータと同等のは、そのRLBigData
クラスのサポート同様の機能などRLBigDataDedup
でcompare.dedup
の交換などepiWeights
、epiClassify
、getPairs
、このような状況では動作しません、RLBigDataDedup
です。ここ
df_identifiers <- df_identifiers %>% mutate(ID = 1:nrow(df_identifiers))
rpairs <- RLBigDataDedup(df_identifiers)
p=epiWeights(rpairs)
(. . .)
は、残りのコードは、最初のものとほぼ同じである。
は、大規模なデータセットのために、次の試行を考えます。 epiWeights
とepiClassify
は、期待通りにRLBigData
クラスで動作しますが、getPairs
はありません。 getPairs
関数は、引数show = "links"
を使用しません。このため、後続のコードはすべて機能しません。
RLBigData
クラスの大規模なデータセットを扱うときに一意のIDの列を生成するために必要な別の方法はありますか、これは単なる制限ですか?