[R] Force "square" crosstabulation

Duncan Murdoch murdoch at stats.uwo.ca
Sun Dec 3 02:33:48 CET 2006


On 12/2/2006 8:26 PM, Manuel Morales wrote:
> 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?

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




More information about the R-help mailing list