[R] convert dataframe to matrix for cmdscale

William Simpson william.a.simpson at gmail.com
Wed Dec 10 14:16:07 CET 2008

On re-reading ?cmdscale I see that I can also use cmdscale(d) on a
full matrix rather than just the lower triangle.
 d: a distance structure such as that returned by 'dist' or a
          full symmetric matrix containing the dissimilarities.

So how to get a full symmetric matrix from a dataframe like this (toy example)?
 x       y       z
 "a"     "a"     0
 "a"     "b"     1
 "a"     "c"     2
 "b"     "a"     .9
 "b"     "b"     0
 "b"     "c"     1.3
 "c"     "a"     2.2
 "c"     "b"     1.1
 "c"     "c"     0

Replacing the corresponding cells in the matrix by their means, I need this:

 c 2.10 1.20 0.00
 b 0.95 0.00 1.20
 a 0.00 0.95 2.10
  a    b    c

E.g. in the original data, the cell (a,b) = 1; (b, a) =0.9. In the
final matrix, (a,b) = (b,a) =0.95

 Thanks very much for any help.


More information about the R-help mailing list