这可能是一个简单的问题,但是我碰壁了。
我有一个二进制对称的相似矩阵,我想将其转换为分类变量。
这是问题的一个简单例子
set.seed(100)
a = sample(letters[1:4], size = 9, replace = TRUE)
b = outer(a, a, function(x, y) as.integer(x == y))
此代码采用分类变量a
并将其转换为相似度矩阵b
。
我想做的事情从b
回到a
。
这可能吗?
编辑
我应该注意类别标签不必相同。只是类别。
答案 0 :(得分:1)
好吧,b
已经丢失了所有名称,因此实际上不可能确切知道哪个组是“ a”,哪个组是“ b”,依此类推,但是您可以将它们聚在一起。由于您基本上创建的是邻接矩阵,因此可以在igraph软件包的帮助下解决此问题。例如
library(igraph)
graph_from_adjacency_matrix(b, mode = "undirected") %>%
clusters() %>% {.$membership}
# [1] 1 1 2 3 1 1 4 1 2
因此我们可以看到位置1、2、5、6和8的值都相同(它们最初是“ b”),依此类推。因此1 = b,2 = c,3 = a和4 = d。但是同样,由于b
中的标签交换将导致相同的矩阵,因此无法从a
那里获得完全相同的标签。