「データ」ベクトル内のわずかに異なる多数のレストラン名を適切な「一致」ベクトルに一致させます。
パッケージ内のstringdistmatrix
機能stringdist
は優れていますが、数 10k x 10k のメモリが不足し、データが大きくなっています。
試してみるas(stringdistmatrix(data, match),'sparseMatrix')
と結果が期待できますが、メモリが不足しています。したがって、ペアがメモリに収まることを期待して、計算された文字列距離または同様の文字列距離を使用sparseMatrix(i,j,x,dims,dimnames)
して、ペアに明示的にインデックスを付けたいと思います。x
adist()
R
data <- c("McDonalds", "MacDonalds", "Mc Donald's", "Wendy's", "Wendys", "Wendy",
"Chipotle", "Chipotle's")
match <- c("McDonalds", "Wendys", "Chipotle")
しようとしている:
library(Matrix)
library(stringdist)
idx <- expand.grid(a=data,b=match)
idx$row <- match(idx$a,idx$b)
idx$col <- match(idx$b,idx$a)
library(Matrix)
sparseMatrix(i=idx$row,
j=idx$col,
x=ifthen(adist(data,match)<2,1,0),
dims=c(7,3),
dimnames = list(data, match))
出力が一致することを期待:
library(stringdist)
as(ifelse(stringdistmatrix(data,match)<2,1,0),'sparseMatrix')