Skip to content

Force "square" crosstabulation

2 messages · Manuel Morales, Duncan Murdoch

#
Hello list members,

I'm looking for a way to force the results of a crosstabulation to be
square - that is, to include 0 values.

For example:

table(letters[1:4],letters[c(1:3,3)])

yields:
    a b c
  a 1 0 0
  b 0 1 0
  c 0 0 1
  d 0 0 1

I would like to return:
    a b c d
  a 1 0 0 0
  b 0 1 0 0
  c 0 0 1 0
  d 0 0 1 0

Any suggestions?

Thanks!
#
On 12/2/2006 8:26 PM, Manuel Morales wrote:
Force the categories to be factors.

 > fletters <- factor(letters[1:4])
 > table(fletters[1:4],fletters[c(1:3,3)])

     a b c d
   a 1 0 0 0
   b 0 1 0 0
   c 0 0 1 0
   d 0 0 1 0

The idea is that when you take subsets of factors, the levels stay the 
same, and table uses those levels for its categories.

Duncan Murdoch