¿Cómo convertir dos factores a la matriz de adyacencia en R?
Tengo un marco de datos con dos columnas (clave y valor) donde cada columna es un factor:
df = data.frame(gl(3,4,labels=c('a','b','c')), gl(6,2))
colnames(df) = c("key", "value")
key value
1 a 1
2 a 1
3 a 2
4 a 2
5 b 3
6 b 3
7 b 4
8 b 4
9 c 5
10 c 5
11 c 6
12 c 6
Quiero convertirlo a matriz de adyacencia (en este caso, tamaño 3x6) como:
1 2 3 4 5 6
a 1 1 0 0 0 0
b 0 0 1 1 0 0
c 0 0 0 0 1 1
Para que pueda ejecutar la agrupación en él (agrupe las claves que tienen valores similares juntos) con kmeans o hclust.
Lo más cerca que pude llegar fue usarmodel.matrix( ~ value, df)
lo que resulta en:
(Intercept) value2 value3 value4 value5 value6
1 1 0 0 0 0 0
2 1 0 0 0 0 0
3 1 1 0 0 0 0
4 1 1 0 0 0 0
5 1 0 1 0 0 0
6 1 0 1 0 0 0
7 1 0 0 1 0 0
8 1 0 0 1 0 0
9 1 0 0 0 1 0
10 1 0 0 0 1 0
11 1 0 0 0 0 1
12 1 0 0 0 0 1
pero los resultados aún no están agrupados por clave.
Desde otro lado, puedo colapsar este conjunto de datos en grupos usando:
aggregate(df$value, by=list(df$key), unique)
Group.1 x.1 x.2
1 a 1 2
2 b 3 4
3 c 5 6
Pero no sé qué hacer a continuación ...
¿Alguien puede ayudar a resolver esto?