与分类变量的相似矩阵

时间:2018-08-02 15:34:23

标签: r

这可能是一个简单的问题,但是我碰壁了。

我有一个二进制对称的相似矩阵,我想将其转换为分类变量。

这是问题的一个简单例子

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

这可能吗?

编辑

我应该注意类别标签不必相同。只是类别。

1 个答案:

答案 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那里获得完全相同的标签。