[R] table() of a factor

Gavin Simpson gavin.simpson at ucl.ac.uk
Tue Jun 29 13:03:54 CEST 2010


On Tue, 2010-06-29 at 11:59 +0100, Robin Hankin wrote:
> Hi
> 
> suppose I have a factor 'x':
> 
>  > x <- as.factor(c(rep("a",3),"b","d"))
>  > table(x)
> x
> a b d
> 3 1 1
>  >
>  >
> 
> But this is not what I want because
> I need to include the fact that the count of "c" is zero.
> 
> I can't just change the levels of x:
> 
>  > levels(x) <- c("a","b","c","d")
>  > table(x)
> x
> a b c d
> 3 1 1 0
>  >
> 
> because this records the single "d" in the original 'x' as a "c".
> 
> 
> What I want is:
> 
> a b c d
> 3 1 0 1

If you know the levels before hand (which you appear to do) then state
them when you create the factor, but use factor() rather than coerce
with as.factor():

x <- factor(c(rep("a",3),"b","d"), levels = letters[1:4])

> table(x)
x
a b c d 
3 1 0 1

> 
> How to get this from 'x'?
> (my real application has dozens of levels with complicated names).
> 
> 
> 

-- 
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%
 Dr. Gavin Simpson             [t] +44 (0)20 7679 0522
 ECRC, UCL Geography,          [f] +44 (0)20 7679 0565
 Pearson Building,             [e] gavin.simpsonATNOSPAMucl.ac.uk
 Gower Street, London          [w] http://www.ucl.ac.uk/~ucfagls/
 UK. WC1E 6BT.                 [w] http://www.freshwaters.org.uk
%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%~%



More information about the R-help mailing list