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.