[R] NA in table with integer types
Petr Pikal
petr.pikal at precheza.cz
Fri Apr 8 16:12:40 CEST 2005
On 8 Apr 2005 at 14:20, Prof Brian Ripley wrote:
> On Fri, 8 Apr 2005, Paul Rathouz wrote:
>
> >
> > OK. Thanks. So, if you use table() on a factor that contains NA's,
> > but for which NA is not a level, is there any way to get table to
> > generate an entry for the NAs? For example, in below, even
> > "exclude=NULL" will not give me an entry for <NA> on the factor y:
Hi
Use exclude in factor not in table
> x<-sample(1:3, 10, replace=T)
> x[5:6]<-NA
> table(x)
x
1 2 3
5 2 1
> y<-factor(x)
> y
[1] 1 1 2 3 <NA> <NA> 1 1 2 1
Levels: 1 2 3
> table(y) # no entry for NA
y
1 2 3
5 2 1
> factor(y,exclude=NULL) #make NA a level in factor y
[1] 1 1 2 3 <NA> <NA> 1 1 2 1
Levels: 1 2 3 NA
> table(y) # shows you entry for NA
y
1 2 3 <NA>
5 2 1 2
>
> I think this very clear from the help page:
>
> exclude: values to use in the exclude argument of 'factor' when
> interpreting non-factor objects; if specified, levels to
> remove from all factors in ....
>
> Only when 'exclude' is specified (i.e., not by default), will
> 'table' drop levels of factor arguments potentially.
>
> and you cannot remove a level that is not there.
>
> You seem to be persisting in not understanding: 'exclude' is supposed
> to be the same type as x (or its levels), and you have given logical
> and numeric values, not character ones.
>
>
>
> >> x <- c(1,2,3,3,NA)
> >> y <- factor(x)
> >> y
> > [1] 1 2 3 3 <NA>
> > Levels: 1 2 3
> >> table(y,exclude=NA)
> > y
> > 1 2 3
> > 1 1 2
> >> table(y,exclude=NaN)
> > y
> > 1 2 3
> > 1 1 2
> >> table(y,exclude=NULL)
> > y
> > 1 2 3
> > 1 1 2
> >
> > On Fri, 8 Apr 2005, Prof Brian Ripley wrote:
> >
> >> NaN only applies to double values: there is no integer NaN (nor Inf
> >> nor -Inf). The difference is clear from
> >>
> >>> factor(x, exclude=NaN)
> >> [1] 1 2 3 3 <NA>
> >> Levels: 1 2 3 <NA>
> >>> factor(as.integer(x), exclude=NaN)
> >> [1] 1 2 3 3 <NA>
> >> Levels: 1 2 3
> >>
> >> If you read ?factor it says
> >>
> >> exclude: a vector of values to be excluded when forming the set
> >> of
> >> levels. This should be of the same type as 'x', and will
> >> be coerced if necessary.
> >>
> >> and as.integer(NaN) is integer NA. So factor(as.integer(x),
> >> exclude=NaN) is the same as factor(as.integer(x), exclude=NA).
> >>
> >
> > [rest deleted]
> >
> > ====================================================================
> > ====== Paul Rathouz, Assoc. Professor ph 773-834-1970 Dept.
> > of Health Studies, Rm. W-264 fax 773-702-1979 University of
> > Chicago prathouz at health.bsd.uchicago.edu 5841 S.
> > Maryland Ave. MC 2007 Chicago, IL 60637
> > ====================================================================
> > ======
> >
> >
>
> --
> Brian D. Ripley, ripley at stats.ox.ac.uk
> Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
> University of Oxford, Tel: +44 1865 272861 (self) 1 South
> Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG,
> UK Fax: +44 1865 272595
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
Petr Pikal
petr.pikal at precheza.cz
More information about the R-help
mailing list