确定数据的连通性并分成组

时间:2015-10-30 03:30:56

标签: r

我有一个关于分组数据的简单问题。拿数据框:

df <- data.frame(c(1,2,3,5,5),c(2,3,4,7,6))
colnames(df)<- c("A","B")
df
  A B
1 1 2
2 2 3
3 3 4
4 5 7
5 5 6

我想要做的是输出基于元素之间的连接折叠原始数据框而创建的东西(表,列表,向量等),因此理想的输出将是:

1 2 3 4 
5 7 6 

我愿意接受有关处理此类数据的最佳方法的任何建议。

编辑: 澄清我如何得到输出:
行名称被忽略 1与2组成同一行:(1,2)
2与3在同一行,因此3连接集合:(1,2,3)
4与3在同一行,所以4连接集:(1,2,3,4)
5与7中的行相同,并且它们都不在现有的集合中,因此新的集合:(5,7)
5与6位于同一行,因此将6添加到集合中:(5,7,6)

1 个答案:

答案 0 :(得分:5)

您可以使用 igraph 包中的数据网络图。

library(igraph)
g <- graph.data.frame(df)
plot(g)

从图中我们可以看到g图表的组成部分以及它们之间的关系。

enter image description here

我不经常使用此软件包,但似乎获取组件的方法是使用get.vertex.attribute(),如下所示。

lapply(decompose.graph(g), get.vertex.attribute, "name")
# [[1]]
# [1] "1" "2" "3" "4"
#
# [[2]]
# [1] "5" "7" "6"