将分类属性向量转换为相似度矩阵

时间:2017-10-25 18:30:12

标签: r matrix vector similarity sna

我需要使用R将分类属性向量转换为“相同的属性矩阵”。

例如,我有一个向量报告N人的性别(男性= 1,女性= 0)。我需要将此向量转换为名为A的NxN矩阵(行和列上的人名),如果两个人(i和j)具有相同的性别,则每个单元Aij的值为1,否则为0。

这是一个例子,有3个人,第一个男性,第二个女性,第三个男性,它们产生这个载体:

c(1, 0, 1) 

我想把它转换成这个矩阵:

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

1 个答案:

答案 0 :(得分:2)

就像lmo说的那样,你不可能知道数据集的结构,所以接下来只是一个例子,你可以看看它是如何完成的。
首先,编制一些数据。

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