我遇到了一个看似微不足道的问题,但我现在无法弄清楚。我什至不知道如何正确地表述它,如果您有任何建议,欢迎您。 我有一个 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 行进行分组,该行通过 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
关于r - R 中按两列分组和级别并集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43482086/