私は科学論文のカップルの間の近接度を計算しようとしています。論文Aの著者の2人がアムステルダムに、1人がニューヨークに住んでいて、論文Bの著者の3人がアムステルダムに住んでいるとき、私は結果を3 + 2 = 5にしたい。私は2つの大きな行列を持っています。列は論文を表し、行は都市を表します。2つの行列のオーバーラップを合計する
行列A:
A1 A2
DAVIS、CA USA 0例えば。
LOS ANGELES、CA USA 。 PALO ALTO、 CA USA。 サクラメント、CA USA 。
サンタモニカ、カリフォルニアアメリカ 。
とMatrixB:
B1
DAVIS、CA USA LOS ANGELES、CA USA パロアルト、CA USA 。
サクラメント、CA USA サンタモニカ、CA USA
2(行列A%※%のT(MatrixB))ののCrossProductものに近づきますが欲しいです。これは、A2-B1のために、私を与えるだろう
(0 * 1)+(1 * 2)+(1 * 0)+(0 * 1)+(2 * 2)= 6
しかし私が欲しいのです:
(0 * 1)+(+ 2 1)+(1 * 0)+(0 * 1)+(2 + 2)= 7
ので、乗算1だとき0、elseを追加します。これを達成するための効率的な(!)方法はありますか?
データセットをフォーマットしてください – akrun
matrixAは5 * 2とt(matri xB)が1 * 5であることを意味します(MatrixA%*%t(MatrixB))。 – cryptomanic
@cryptomanic本当です。 crossprod(x = MatrixA、y = MatrixB)が行います。 –