----------------------表2は,文に出現する単語の出現回数を示しています。
ラベル 特徴ベクトル
----------------------
w1 1 2 3 4 3 2 1
w2 2 2 4 3 2 1 2
w3 1 3 3 2 1 2 3
w4 3 2 1 2 2 2 1
w5 1 4 2 2 3 4 1
----------------------
-------------------------表1と表2から,以下のルールで,文の特徴ベクトルを作成します。
w1 w2 w3 w4 w5
-------------------------
2 1 0 3 2
1 0 0 3 2
1 3 3 2 1
3 2 0 2 0
0 0 3 0 1
3 0 3 3 2
1 2 3 4 5
----------------------
No.22384 Re: R ベクトルの計算 【荒】 2017/06/03(Sat) 21:10
tab1 <- matrix(c(1, 2, 3, 4, 3, 2, 1,でお望みの結果が得られているでしょうか。
2, 2, 4, 3, 2, 1, 2,
1, 3, 3, 2, 1, 2, 3,
3, 2, 1, 2, 2, 2, 1,
1, 4, 2, 2, 3, 4, 1), 5, byrow = TRUE)
tab2 <- matrix(c(2, 1, 0, 3, 2,
1, 0, 0, 3, 2,
1, 3, 3, 2, 1,
3, 2, 0, 2, 0,
0, 0, 3, 0, 1,
3, 0, 3, 3, 2,
1, 2, 3, 4, 5),,5, byrow = TRUE)
t(sapply(seq(nrow(tab2)),
function(i) colSums(tab1 * tab2[i,])/sum(tab2[i,])))
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 1.875000 2.500000 2.125000 2.625000 2.500000 2.375000 1.125000
[2,] 2.000000 2.666667 1.666667 2.333333 2.500000 2.666667 1.000000
[3,] 1.700000 2.500000 2.800000 2.500000 1.900000 1.900000 1.900000
[4,] 1.857143 2.000000 2.714286 3.142857 2.428571 1.714286 1.285714
[5,] 1.000000 3.250000 2.750000 2.000000 1.500000 2.500000 2.500000
[6,] 1.545455 2.636364 2.272727 2.545455 2.181818 2.363636 1.545455
[7,] 1.666667 2.866667 2.266667 2.266667 2.200000 2.533333 1.533333
表2の1行目を例にすると> tab1 * tab2[1,]をsapply関数でtab2の行ごとに計算し
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 2 4 6 8 6 4 2
[2,] 2 2 4 3 2 1 2
[3,] 0 0 0 0 0 0 0
[4,] 9 6 3 6 6 6 3
[5,] 2 8 4 4 6 8 2
> colSums(tab1 * tab2[1,])
[1] 15 20 17 21 20 19 9
> sum(tab2[1,])
[1] 8
> colSums(tab1 * tab2[1,])/sum(tab2[1,])
[1] 1.875 2.500 2.125 2.625 2.500 2.375 1.125
t関数で行と列を入れ替えています。
確認をお願いします。
No.22386 Re: R ベクトルの計算 【荒】 2017/06/04(Sun) 05:11
> (tab2 %*% tab1)/rowSums(tab2)の方が簡単ですね。
[,1] [,2] [,3] [,4] [,5] [,6] [,7]
[1,] 1.875000 2.500000 2.125000 2.625000 2.500000 2.375000 1.125000
[2,] 2.000000 2.666667 1.666667 2.333333 2.500000 2.666667 1.000000
[3,] 1.700000 2.500000 2.800000 2.500000 1.900000 1.900000 1.900000
[4,] 1.857143 2.000000 2.714286 3.142857 2.428571 1.714286 1.285714
[5,] 1.000000 3.250000 2.750000 2.000000 1.500000 2.500000 2.500000
[6,] 1.545455 2.636364 2.272727 2.545455 2.181818 2.363636 1.545455
[7,] 1.666667 2.866667 2.266667 2.266667 2.200000 2.533333 1.533333
No.22387 【御礼】 Re: R ベクトルの計算 【明石】 2017/06/04(Sun) 07:58
青木先生,
いつもお世話になり,ありがとうございます,明石と申します。
荒 様,
貴重なご教示をいただきまして,ありがとうございます。
確認させていただきました。
ここで使われている考え方は,大変に勉強になりました。
心から御礼を申し上げます。
● 「統計学関連なんでもあり」の過去ログ--- 048 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る