我需要使用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)
答案 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