# [R] Normalising and pivoting tables

Wolfram Fischer - Z/I/M wolfram at fischer-zim.ch
Fri Jun 14 17:59:09 CEST 2002

```I wanted to normalise table m1 into m2
and then get m1 back from m2. I did:

m1 <- matrix( 11:16, 3, 2, byrow=T )
rownames(m1) <- letters[1:3]
colnames(m1) <- toupper( letters[1:2] )
#-> m1
#      A  B
#   a 11 12
#   b 13 14
#   c 15 16

val <- as.vector(m1)
m2.index <- expand.grid( f1 = rownames(m1), f2 = colnames(m1) )
m2 <- cbind( m2.index, val )
#-> m2
#    f1 f2 val
#  1  a  A  11
#  2  b  A  13
#  3  c  A  15
#  4  a  B  12
#  5  b  B  14
#  6  c  B  16

m1.from.m2 <- matrix( m2\$val, nlevels(m2\$f1), nlevels(m2\$f2) )
rownames(m1.from.m2) <- levels(m2\$f1)
colnames(m1.from.m2) <- levels(m2\$f2)
#-> m1.from.m2
#      A  B
#   a 11 12
#   b 13 14
#   c 15 16

m3 <- m2[c(1:2,4:6),]
#-> m3
#    f1 f2 val
#  1  a  A  11
#  2  b  A  13
#  3  a  B  12
#  4  b  B  14
#  5  c  B  16

m1.from.m3 <- ???

My questions:
- Is there a better/other way to get m2 from m1?
- Is there a better/other way to get m1.2 from m2?
- How to get m1.3 from m3 which would be m1.2 with NA instead of 15?

Thanks. Wolfram Fischer
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._

```