按两列分组和R中的级别并集

按两列分组和R中的级别并集,r,data.table,dplyr,R,Data.table,Dplyr,我被困在一个看似琐碎的问题上,但我现在无法解决它。我甚至不知道如何正确地表述它,如果你有任何建议,欢迎你。 我有一个data.frame,我想根据两列对其进行分组/索引。问题是,我要分组的行在这些列中不共享相同的值。相反,有些行在一列中具有相同的值,而有些行在第二列中具有不同行的公共值(我也希望将其包括在分组中)。下面是一个简单的例子,我希望这能让它更清楚一些: id V1 V2 group_id 1 a c 1 2 a d 1 3 b d

我被困在一个看似琐碎的问题上,但我现在无法解决它。我甚至不知道如何正确地表述它,如果你有任何建议,欢迎你。 我有一个data.frame,我想根据两列对其进行分组/索引。问题是,我要分组的行在这些列中不共享相同的值。相反,有些行在一列中具有相同的值,而有些行在第二列中具有不同行的公共值(我也希望将其包括在分组中)。下面是一个简单的例子,我希望这能让它更清楚一些:

id V1 V2 group_id
1   a  c        1
2   a  d        1
3   b  d        1
4   w  y        2
5   w  z        2
6   x  z        2
第1行和第2行共有第V1列的值
a
。但我不仅要对它们进行分组,还要对第3行进行分组,第3行通过V2列的值
d
进行“连接”。现在,我只能分别对第1、2和2、3行进行分组

第二组也是如此,这里我想用V1中的
w
或V2中的
z
对值进行分组
x
y
是不相关的


非常感谢您的帮助。

以下是使用
igraph
软件包中的
cluster
功能可以做到这一点的方法:

library(igraph)
relations <- data.frame(from=df$V1,to=df$V2)
g <- graph_from_data_frame(relations)
group_id <- data.frame(V=names(clusters(g)$membership),
                       cluster=clusters(g)$membership,stringsAsFactors=FALSE)
left_join(df,group_id,by=c("V1"="V"))

  id V1 V2 group_id cluster
1  1  a  c        1       1
2  2  a  d        1       1
3  3  b  d        1       1
4  4  w  y        2       2
5  5  w  z        2       2
6  6  x  z        2       2
库(igraph)

关系可能会查看igraph软件包和连接的组件。如果您有另一行的
V1=b
V2=z
正确的组分类是什么?