我在 R 中转换矩阵时遇到了一些麻烦。 假设你有一个包含 n 个观测值和 k 个分类变量的数据集(我没有观察到这个数据集)。 我得到了包含每对观察值之间距离的距离矩阵,因此我有一个矩阵 n x n.
现在我想将这个矩阵转换为 k x k 矩阵,因为我的变量是分类的。事实上,许多观测值的距离为 0,因为它们观测到了每个变量的同一类别。所以在那个单元格中会有距离 = 0。然后在矩阵的另一个元素中会有属于两个不同单元格的观察值之间的距离。
例子
a = factor(c(rep("c", 3), rep("d", 3), rep("e", 3)))
b = c(rep(c("f","g","g"), times=3))
y = c(3,1,1,1,5,1,1,1,4)
dati = data.frame(a, b, y)
cross_prod = prod(sapply(dati[, -length(dati)], function(x) length(unique(x))))
mat = matrix(NA, nrow = cros_prod, ncol = cros_prod)
for (i in 1:ncol(mat)) {
for (j in 1:nrow(mat)) {
mat[i, j] = sum(var[i, 1:k] == dati[j, 1:k])
}
}
这就是我想要得到的。但是现在我没有数据,而是有一个 n x n 矩阵,其中包含每个人之间的距离。
提前致谢!