2017-10-25 8 views
0

をカテゴリ属性ベクトルを変換= 0)。私はこのベクトルを、2つの人物(iとj)が同じ性別を持つ場合は1の値を持ち、そうでない場合は0の値を持つA(行と列の人名を持つ)という名前のNxN行列に変換する必要があります。ここ私はN人の性別を報告するベクトル(男性= 1、女性を持っ例えばR.</p> <p>を使用して「同じ属性マトリックス」にカテゴリ属性ベクトルをtransfromする必要がある類似度行列に

は3名、最初の男性、このベクターを産生第2の雌、第三の男性との例である:

c(1, 0, 1) 

私はこのマトリックスに変換したい:

A = matrix(c(1, 0, 1, 0, 1, 0, 1, 0, 1), nrow=3, ncol=3, byrow = TRUE) 

答えて

2

同様あなたがデータセットの構造を知ることは不可能だから、以下はどのようにしてそれを行うことができるかの例です。
まず、いくつかのデータを作ります。 `+アウター(TMP:

set.seed(3488) # make the results reproducible 
x <- LETTERS[1:5] 
y <- sample(0:1, 5, TRUE) 
df <- data.frame(x, y) 

今、あなたのニーズに応じて

A <- outer(df$y, df$y, function(a, b) as.integer(a == b)) 
dimnames(A) <- list(df$x, df$x) 
A 
# A B C D E 
#A 1 1 1 0 0 
#B 1 1 1 0 0 
#C 1 1 1 0 0 
#D 0 0 0 1 1 
#E 0 0 0 1 1 
+0

alt..'tcrossprod(表(DF))' – user20650

+0

やや短いが、解釈/読みにくくし、それを集計、tmp、 "==") '。 – lmo

関連する問題