r dplyr

Hacer un group_indices basado en varias columnas



dplyr (1)

Usando igraph obtenga membresía, luego asigne nombres:

library(igraph) # convert to graph, and get clusters membership ids g <- graph_from_data_frame(df1[, c(2, 3, 1)]) myGroups <- components(g)$membership myGroups # A B C D E F Z X Y W V U s T # 1 1 2 3 4 4 1 1 1 2 2 2 3 4 # then map on names df1$group <- myGroups[df1$G1] df1 # id G1 G2 group # 1 1 A Z 1 # 2 2 A X 1 # 3 3 B X 1 # 4 4 B Y 1 # 5 5 C W 2 # 6 6 C V 2 # 7 7 C U 2 # 8 8 D s 3 # 9 9 E T 4 # 10 10 F T 4

Me gustaría generar índices para agrupar observaciones basadas en dos columnas. Pero quiero que se formen grupos de observación que compartan, al menos una observación en común. Puedo ver cómo hacer grupos basados ​​en observaciones que comparten ambas observaciones en común, pero no solo una de ellas.

Por ejemplo, con el marco de datos:

dt <- data.frame(id=1:10, G1 = c("A","A","B","B","C","C","C","D","E","F"), G2 = c("Z","X","X","Y","W","V","U","s","T","T"))

Me gustaria obtener una columna

1,1,1,1,2,2,2,3,4,4

Intenté con group_indices de dplyr, pero no lo he logrado.