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