¿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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta